From c5312de5bad5c657d30e7a2146c56d81c1be916a Mon Sep 17 00:00:00 2001 From: Kieran Parsons Date: Wed, 13 Sep 2023 11:29:14 -0400 Subject: [PATCH] Create release 1.0.0 --- .github/workflows/requirements-dev.txt | 5 + .github/workflows/static_checks.yaml | 76 + .gitignore | 168 ++ .pre-commit-config.yaml | 69 + .reuse/dep5 | 13 + .vscode/README.md | 9 + .vscode/extensions.json | 7 + .vscode/settings.json | 32 + .../cityscapes/config/solver_CASENet.prototxt | 18 + CASENet/cityscapes/config/solver_DSN.prototxt | 18 + .../cityscapes/config/test_CASENet.prototxt | 1611 ++++++++++++++++ CASENet/cityscapes/config/test_DSN.prototxt | 1662 ++++++++++++++++ .../cityscapes/config/train_CASENet.prototxt | 1630 ++++++++++++++++ CASENet/cityscapes/config/train_DSN.prototxt | 1689 ++++++++++++++++ CASENet/cityscapes/solve.py | 37 + CASENet/cityscapes/test.py | 127 ++ CASENet/cityscapes/visualize_multilabel.py | 355 ++++ CASENet/sbd/config/solver_Basic.prototxt | 18 + CASENet/sbd/config/solver_CASENet-.prototxt | 18 + CASENet/sbd/config/solver_CASENet.prototxt | 18 + CASENet/sbd/config/solver_DSN.prototxt | 18 + CASENet/sbd/config/test_Basic.prototxt | 1550 +++++++++++++++ CASENet/sbd/config/test_CASENet-.prototxt | 1621 ++++++++++++++++ CASENet/sbd/config/test_CASENet.prototxt | 1621 ++++++++++++++++ CASENet/sbd/config/test_DSN.prototxt | 1675 ++++++++++++++++ CASENet/sbd/config/train_Basic.prototxt | 1568 +++++++++++++++ CASENet/sbd/config/train_CASENet-.prototxt | 1639 ++++++++++++++++ CASENet/sbd/config/train_CASENet.prototxt | 1641 ++++++++++++++++ CASENet/sbd/config/train_DSN.prototxt | 1702 +++++++++++++++++ CASENet/sbd/solve.py | 37 + CASENet/sbd/test.py | 96 + CASENet/sbd/vis_features.py | 147 ++ CONTRIBUTING.md | 10 + LICENSE.md | 661 +++++++ LICENSES/BSD-2-Clause.txt | 44 + README.md | 307 +++ caffe/include/caffe/data_transformer.hpp | 6 + .../include/caffe/layers/base_data_layer.hpp | 1 + .../image_dim_prefetching_data_layer.hpp | 45 + .../caffe/layers/image_seg_data_layer.hpp | 44 + ...ghted_sigmoid_cross_entropy_loss_layer.hpp | 58 + ...ghted_sigmoid_cross_entropy_loss_layer.hpp | 110 ++ caffe/src/caffe/data_transformer.cpp | 297 +++ .../image_dim_prefetching_data_layer.cpp | 84 + .../image_dim_prefetching_data_layer.cu | 39 + .../src/caffe/layers/image_seg_data_layer.cpp | 331 ++++ ...ghted_sigmoid_cross_entropy_loss_layer.cpp | 220 +++ ...ghted_sigmoid_cross_entropy_loss_layer.cpp | 164 ++ caffe/src/caffe/proto/caffe.proto | 21 + requirements.txt | 21 + 50 files changed, 23358 insertions(+) create mode 100644 .github/workflows/requirements-dev.txt create mode 100644 .github/workflows/static_checks.yaml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 .reuse/dep5 create mode 100644 .vscode/README.md create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 CASENet/cityscapes/config/solver_CASENet.prototxt create mode 100644 CASENet/cityscapes/config/solver_DSN.prototxt create mode 100644 CASENet/cityscapes/config/test_CASENet.prototxt create mode 100644 CASENet/cityscapes/config/test_DSN.prototxt create mode 100644 CASENet/cityscapes/config/train_CASENet.prototxt create mode 100644 CASENet/cityscapes/config/train_DSN.prototxt create mode 100644 CASENet/cityscapes/solve.py create mode 100644 CASENet/cityscapes/test.py create mode 100644 CASENet/cityscapes/visualize_multilabel.py create mode 100644 CASENet/sbd/config/solver_Basic.prototxt create mode 100644 CASENet/sbd/config/solver_CASENet-.prototxt create mode 100644 CASENet/sbd/config/solver_CASENet.prototxt create mode 100644 CASENet/sbd/config/solver_DSN.prototxt create mode 100644 CASENet/sbd/config/test_Basic.prototxt create mode 100644 CASENet/sbd/config/test_CASENet-.prototxt create mode 100644 CASENet/sbd/config/test_CASENet.prototxt create mode 100644 CASENet/sbd/config/test_DSN.prototxt create mode 100644 CASENet/sbd/config/train_Basic.prototxt create mode 100644 CASENet/sbd/config/train_CASENet-.prototxt create mode 100644 CASENet/sbd/config/train_CASENet.prototxt create mode 100644 CASENet/sbd/config/train_DSN.prototxt create mode 100644 CASENet/sbd/solve.py create mode 100644 CASENet/sbd/test.py create mode 100644 CASENet/sbd/vis_features.py create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE.md create mode 100644 LICENSES/BSD-2-Clause.txt create mode 100644 README.md create mode 100644 caffe/include/caffe/layers/image_dim_prefetching_data_layer.hpp create mode 100644 caffe/include/caffe/layers/image_seg_data_layer.hpp create mode 100644 caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp create mode 100644 caffe/include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp create mode 100644 caffe/src/caffe/layers/image_dim_prefetching_data_layer.cpp create mode 100644 caffe/src/caffe/layers/image_dim_prefetching_data_layer.cu create mode 100644 caffe/src/caffe/layers/image_seg_data_layer.cpp create mode 100644 caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp create mode 100644 caffe/src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp create mode 100644 requirements.txt diff --git a/.github/workflows/requirements-dev.txt b/.github/workflows/requirements-dev.txt new file mode 100644 index 0000000..4f1aa6e --- /dev/null +++ b/.github/workflows/requirements-dev.txt @@ -0,0 +1,5 @@ +# Copyright (C) 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +pre-commit diff --git a/.github/workflows/static_checks.yaml b/.github/workflows/static_checks.yaml new file mode 100644 index 0000000..65875da --- /dev/null +++ b/.github/workflows/static_checks.yaml @@ -0,0 +1,76 @@ +# Copyright (C) 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: Static code checks + +on: # yamllint disable-line rule:truthy + pull_request: + push: + branches: + - '**' + tags-ignore: + - '**' + +env: + LICENSE: AGPL-3.0-or-later + FETCH_DEPTH: 1 + FULL_HISTORY: 0 + SKIP_WORD_PRESENCE_CHECK: 0 + +jobs: + static-code-check: + if: endsWith(github.event.repository.name, 'private') + + name: Run static code checks + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + + steps: + - name: Setup history + if: github.ref == 'refs/heads/oss' + run: | + echo "FETCH_DEPTH=0" >> $GITHUB_ENV + echo "FULL_HISTORY=1" >> $GITHUB_ENV + + - name: Setup version + if: github.ref == 'refs/heads/melco' + run: | + echo "SKIP_WORD_PRESENCE_CHECK=1" >> $GITHUB_ENV + + - name: Check out code + uses: actions/checkout@v3 + with: + fetch-depth: ${{ env.FETCH_DEPTH }} # '0' to check full history + + - name: Set up environment + run: git config user.email github-bot@merl.com + + - name: Set up python + uses: actions/setup-python@v4 + with: + python-version: 3.8 + cache: 'pip' + cache-dependency-path: '.github/workflows/requirements-dev.txt' + + - name: Install python packages + run: pip install -r .github/workflows/requirements-dev.txt + + - name: Ensure lint and pre-commit steps have been run + uses: pre-commit/action@v3.0.0 + + - name: Check files + uses: merl-oss-private/merl-file-check-action@v1 + with: + license: ${{ env.LICENSE }} + full-history: ${{ env.FULL_HISTORY }} # If true, use fetch-depth 0 above + skip-word-presence-check: ${{ env.SKIP_WORD_PRESENCE_CHECK }} + + - name: Check license compatibility + if: github.ref != 'refs/heads/melco' + uses: merl-oss-private/merl_license_compatibility_checker@v1 + with: + input-filename: requirements.txt + license: ${{ env.LICENSE }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d4cdd2c --- /dev/null +++ b/.gitignore @@ -0,0 +1,168 @@ +# Copyright (C) 2023 Mitsubishi Electric Research Laboratories (MERL). +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# Python .gitignore from https://github.com/github/gitignore/blob/main/Python.gitignore +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Custom ignores +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..7f56432 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,69 @@ +# Copyright (C) 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# Pre-commit configuration. See https://pre-commit.com + +default_language_version: + python: python3 + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: end-of-file-fixer + exclude: ^caffe/ + - id: trailing-whitespace + exclude: ^caffe/ + - id: check-yaml + - id: check-added-large-files + args: ['--maxkb=1000'] + + - repo: https://gitlab.com/bmares/check-json5 + rev: v1.0.0 + hooks: + - id: check-json5 + + - repo: https://github.com/homebysix/pre-commit-macadmin + rev: v1.12.3 + hooks: + - id: check-git-config-email + args: ['--domains', 'merl.com'] + + - repo: https://github.com/psf/black + rev: 22.12.0 + hooks: + - id: black + exclude: | + (?x)^( + CASENet/sbd/test.py| + CASENet/cityscapes/test.py| + CASENet/cityscapes/visualize_multilabel.py| + CASENet/sbd/vis_features.py| + caffe/ + ) + args: + - --line-length=120 + + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + exclude: ^caffe/ + args: ["--profile", "black", "--filter-files", "--line-length", "120", "--skip-gitignore"] + + # To stop flake8 error from causing a failure, use --exit-zero. By default, pre-commit will not show the warnings, + # so use verbose: true to see them. + - repo: https://github.com/pycqa/flake8 + rev: 5.0.4 + hooks: + - id: flake8 + exclude: ^caffe/ + # Black compatibility, Eradicate options + args: ["--max-line-length=120", "--extend-ignore=E203", "--eradicate-whitelist-extend", "eradicate:\\s*no", + "--exit-zero"] + verbose: true + additional_dependencies: [ + # https://github.com/myint/eradicate, https://github.com/wemake-services/flake8-eradicate + "flake8-eradicate" + ] diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000..51fcbf2 --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,13 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ + +Files: .vscode/* +Copyright: 2023 Mitsubishi Electric Research Laboratories (MERL) +License: AGPL-3.0-or-later + +Files: caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp +Copyright: 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +License: AGPL-3.0-or-later + +Files: caffe/* +Copyright: Copyright (c) 2014-2017 The Regents of the University of California (Regents) and the respective contributors +License: BSD-2-Clause diff --git a/.vscode/README.md b/.vscode/README.md new file mode 100644 index 0000000..4eb80d7 --- /dev/null +++ b/.vscode/README.md @@ -0,0 +1,9 @@ +# VS Code recommended extensions and settings + +These files provide recommended extensions and workspace settings for VS Code for python development. The recommended extensions are: + +* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python"): Official python extension from Microsoft +* [Python Type Hint](https://marketplace.visualstudio.com/items?itemName=njqdev.vscode-python-typehint): Type hint completion for Python +* [autoDocstring](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring): Generates python docstrings automatically + +If these extensions are not already globally installed, they will be recommended to you for installation when you open the project in VS Code. diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2d42587 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "ms-python.python", + "njqdev.vscode-python-typehint", + "njpwerner.autodocstring" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b5520a9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + "editor.rulers": [ + 120 + ], + "[python]": { + "editor.tabSize": 4 + }, + "[markdown]": { + "editor.wordWrap": "bounded", + "editor.wordWrapColumn": 120 + }, + "files.eol": "\n", + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, + "editor.formatOnSave": true, + "python.formatting.provider": "black", + "python.formatting.blackArgs": [ + "--line-length=120" + ], + "python.linting.flake8Enabled": true, + "python.linting.enabled": true, + "python.linting.flake8Args": [ + "--max-line-length=120", + "--extend-ignore=E203" + ], + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/CASENet/cityscapes/config/solver_CASENet.prototxt b/CASENet/cityscapes/config/solver_CASENet.prototxt new file mode 100644 index 0000000..594f598 --- /dev/null +++ b/CASENet/cityscapes/config/solver_CASENet.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_CASENet.prototxt" +lr_policy: "step" +base_lr: 5.0e-8 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 30000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/CASENet" +solver_mode: GPU diff --git a/CASENet/cityscapes/config/solver_DSN.prototxt b/CASENet/cityscapes/config/solver_DSN.prototxt new file mode 100644 index 0000000..869df94 --- /dev/null +++ b/CASENet/cityscapes/config/solver_DSN.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_DSN.prototxt" +lr_policy: "step" +base_lr: 5.0e-8 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 30000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/DSN" +solver_mode: GPU diff --git a/CASENet/cityscapes/config/test_CASENet.prototxt b/CASENet/cityscapes/config/test_CASENet.prototxt new file mode 100644 index 0000000..c26926b --- /dev/null +++ b/CASENet/cityscapes/config/test_CASENet.prototxt @@ -0,0 +1,1611 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 440 +input_dim: 440 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { kernel_size: 4 stride: 2 pad: 1 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { kernel_size: 8 stride: 4 pad: 2 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 pad: 4 num_output: 19 group: 19 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_up" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 19 group: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## compute output #################### +layer { bottom: "score_ce_fuse" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/cityscapes/config/test_DSN.prototxt b/CASENet/cityscapes/config/test_DSN.prototxt new file mode 100644 index 0000000..b7318df --- /dev/null +++ b/CASENet/cityscapes/config/test_DSN.prototxt @@ -0,0 +1,1662 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "DSN_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 440 +input_dim: 440 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## DSN conv 1 #################### +layer { bottom: "conv1" top: "score_side1" name: "score_side1" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +################## DSN conv 2 #################### +layer { bottom: "res2c" top: "score_side2" name: "score_side2" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side2" top: "score_side2_up" type: "Deconvolution" name: "upsample_side2" + convolution_param { kernel_size: 4 stride: 2 pad: 1 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +################## DSN conv 3 #################### +layer { bottom: "res3b3" top: "score_side3" name: "score_side3" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side3" top: "score_side3_up" type: "Deconvolution" name: "upsample_side3" + convolution_param { kernel_size: 8 stride: 4 pad: 2 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +################## DSN conv 4 #################### +layer { bottom: "res4b22" top: "score_side4" name: "score_side4" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side4" top: "score_side4_up" type: "Deconvolution" name: "upsample_side4" + convolution_param { kernel_size: 16 stride: 8 pad: 4 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +################## DSN conv 5 #################### +layer { bottom: "res5c" top: "score_side5" name: "score_side5" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side5" top: "score_side5_up" type: "Deconvolution" name: "upsample_side5" + convolution_param { kernel_size: 16 stride: 8 pad: 4 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +################## Sliced concat of side activisions #################### +layer { name: "slicer_side1" type: "Slice" bottom: "score_side1" + top: "score_s1_cls1" top: "score_s1_cls2" top: "score_s1_cls3" top: "score_s1_cls4" top: "score_s1_cls5" + top: "score_s1_cls6" top: "score_s1_cls7" top: "score_s1_cls8" top: "score_s1_cls9" top: "score_s1_cls10" + top: "score_s1_cls11" top: "score_s1_cls12" top: "score_s1_cls13" top: "score_s1_cls14" top: "score_s1_cls15" + top: "score_s1_cls16" top: "score_s1_cls17" top: "score_s1_cls18" top: "score_s1_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side2" type: "Slice" bottom: "score_side2_up" + top: "score_s2_cls1" top: "score_s2_cls2" top: "score_s2_cls3" top: "score_s2_cls4" top: "score_s2_cls5" + top: "score_s2_cls6" top: "score_s2_cls7" top: "score_s2_cls8" top: "score_s2_cls9" top: "score_s2_cls10" + top: "score_s2_cls11" top: "score_s2_cls12" top: "score_s2_cls13" top: "score_s2_cls14" top: "score_s2_cls15" + top: "score_s2_cls16" top: "score_s2_cls17" top: "score_s2_cls18" top: "score_s2_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side3" type: "Slice" bottom: "score_side3_up" + top: "score_s3_cls1" top: "score_s3_cls2" top: "score_s3_cls3" top: "score_s3_cls4" top: "score_s3_cls5" + top: "score_s3_cls6" top: "score_s3_cls7" top: "score_s3_cls8" top: "score_s3_cls9" top: "score_s3_cls10" + top: "score_s3_cls11" top: "score_s3_cls12" top: "score_s3_cls13" top: "score_s3_cls14" top: "score_s3_cls15" + top: "score_s3_cls16" top: "score_s3_cls17" top: "score_s3_cls18" top: "score_s3_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side4" type: "Slice" bottom: "score_side4_up" + top: "score_s4_cls1" top: "score_s4_cls2" top: "score_s4_cls3" top: "score_s4_cls4" top: "score_s4_cls5" + top: "score_s4_cls6" top: "score_s4_cls7" top: "score_s4_cls8" top: "score_s4_cls9" top: "score_s4_cls10" + top: "score_s4_cls11" top: "score_s4_cls12" top: "score_s4_cls13" top: "score_s4_cls14" top: "score_s4_cls15" + top: "score_s4_cls16" top: "score_s4_cls17" top: "score_s4_cls18" top: "score_s4_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_side5_up" + top: "score_s5_cls1" top: "score_s5_cls2" top: "score_s5_cls3" top: "score_s5_cls4" top: "score_s5_cls5" + top: "score_s5_cls6" top: "score_s5_cls7" top: "score_s5_cls8" top: "score_s5_cls9" top: "score_s5_cls10" + top: "score_s5_cls11" top: "score_s5_cls12" top: "score_s5_cls13" top: "score_s5_cls14" top: "score_s5_cls15" + top: "score_s5_cls16" top: "score_s5_cls17" top: "score_s5_cls18" top: "score_s5_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "concat_clsall" type: "Concat" top: "score_concat_clsall" + bottom: "score_s1_cls1" bottom: "score_s2_cls1" bottom: "score_s3_cls1" bottom: "score_s4_cls1" bottom: "score_s5_cls1" + bottom: "score_s1_cls2" bottom: "score_s2_cls2" bottom: "score_s3_cls2" bottom: "score_s4_cls2" bottom: "score_s5_cls2" + bottom: "score_s1_cls3" bottom: "score_s2_cls3" bottom: "score_s3_cls3" bottom: "score_s4_cls3" bottom: "score_s5_cls3" + bottom: "score_s1_cls4" bottom: "score_s2_cls4" bottom: "score_s3_cls4" bottom: "score_s4_cls4" bottom: "score_s5_cls4" + bottom: "score_s1_cls5" bottom: "score_s2_cls5" bottom: "score_s3_cls5" bottom: "score_s4_cls5" bottom: "score_s5_cls5" + bottom: "score_s1_cls6" bottom: "score_s2_cls6" bottom: "score_s3_cls6" bottom: "score_s4_cls6" bottom: "score_s5_cls6" + bottom: "score_s1_cls7" bottom: "score_s2_cls7" bottom: "score_s3_cls7" bottom: "score_s4_cls7" bottom: "score_s5_cls7" + bottom: "score_s1_cls8" bottom: "score_s2_cls8" bottom: "score_s3_cls8" bottom: "score_s4_cls8" bottom: "score_s5_cls8" + bottom: "score_s1_cls9" bottom: "score_s2_cls9" bottom: "score_s3_cls9" bottom: "score_s4_cls9" bottom: "score_s5_cls9" + bottom: "score_s1_cls10" bottom: "score_s2_cls10" bottom: "score_s3_cls10" bottom: "score_s4_cls10" bottom: "score_s5_cls10" + bottom: "score_s1_cls11" bottom: "score_s2_cls11" bottom: "score_s3_cls11" bottom: "score_s4_cls11" bottom: "score_s5_cls11" + bottom: "score_s1_cls12" bottom: "score_s2_cls12" bottom: "score_s3_cls12" bottom: "score_s4_cls12" bottom: "score_s5_cls12" + bottom: "score_s1_cls13" bottom: "score_s2_cls13" bottom: "score_s3_cls13" bottom: "score_s4_cls13" bottom: "score_s5_cls13" + bottom: "score_s1_cls14" bottom: "score_s2_cls14" bottom: "score_s3_cls14" bottom: "score_s4_cls14" bottom: "score_s5_cls14" + bottom: "score_s1_cls15" bottom: "score_s2_cls15" bottom: "score_s3_cls15" bottom: "score_s4_cls15" bottom: "score_s5_cls15" + bottom: "score_s1_cls16" bottom: "score_s2_cls16" bottom: "score_s3_cls16" bottom: "score_s4_cls16" bottom: "score_s5_cls16" + bottom: "score_s1_cls17" bottom: "score_s2_cls17" bottom: "score_s3_cls17" bottom: "score_s4_cls17" bottom: "score_s5_cls17" + bottom: "score_s1_cls18" bottom: "score_s2_cls18" bottom: "score_s3_cls18" bottom: "score_s4_cls18" bottom: "score_s5_cls18" + bottom: "score_s1_cls19" bottom: "score_s2_cls19" bottom: "score_s3_cls19" bottom: "score_s4_cls19" bottom: "score_s5_cls19" + concat_param { axis: 1 } } + +layer { bottom: "score_concat_clsall" top: "score_fuse_clsall" name: "side_fusion" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 group: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.2} bias_filler { type: "constant" value: 0 } } } + +################## compute output #################### +layer { bottom: "score_fuse_clsall" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/cityscapes/config/train_CASENet.prototxt b/CASENet/cityscapes/config/train_CASENet.prototxt new file mode 100644 index 0000000..4960b75 --- /dev/null +++ b/CASENet/cityscapes/config/train_CASENet.prototxt @@ -0,0 +1,1630 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 440 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/disk_at_cv0/datasets/Cityscapes" + source: "/homes/cfeng/disk_at_cv0/datasets/Cityscapes/trainEdgeBin.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 stride: 1 pad: 0 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 stride: 1 pad: 0 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { num_output: 1 kernel_size: 4 stride: 2 pad: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 stride: 1 pad: 0 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { num_output: 1 kernel_size: 8 stride: 4 pad: 2 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 19 kernel_size: 1 stride: 1 pad: 0 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { num_output: 19 kernel_size: 16 stride: 8 pad: 4 group: 19 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_side5" bottom: "score_cls_side5_up" bottom: "label" top: "loss_cls_side5" loss_weight: 1} + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_up" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_up" bottom: "score_edge_side3_up" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 19 group: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_fuse" bottom: "score_ce_fuse" bottom: "label" top: "loss_cls_fuse" loss_weight: 1} diff --git a/CASENet/cityscapes/config/train_DSN.prototxt b/CASENet/cityscapes/config/train_DSN.prototxt new file mode 100644 index 0000000..9c63f9a --- /dev/null +++ b/CASENet/cityscapes/config/train_DSN.prototxt @@ -0,0 +1,1689 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "DSN_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 440 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/disk_at_cv0/datasets/Cityscapes" + source: "/homes/cfeng/disk_at_cv0/datasets/Cityscapes/trainEdgeBin.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## DSN conv 1 #################### +layer { bottom: "conv1" top: "score_side1" name: "score_side1" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s1" bottom: "score_side1" bottom: "label" top:"side1_loss" loss_weight: 1} + +################## DSN conv 2 #################### +layer { bottom: "res2c" top: "score_side2" name: "score_side2" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side2" top: "score_side2_up" type: "Deconvolution" name: "upsample_side2" + convolution_param { kernel_size: 4 stride: 2 pad: 1 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s2" bottom: "score_side2_up" bottom: "label" top:"side2_loss" loss_weight: 1} + +################## DSN conv 3 #################### +layer { bottom: "res3b3" top: "score_side3" name: "score_side3" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side3" top: "score_side3_up" type: "Deconvolution" name: "upsample_side3" + convolution_param { kernel_size: 8 stride: 4 pad: 2 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s3" bottom: "score_side3_up" bottom: "label" top:"side3_loss" loss_weight: 1} + +################## DSN conv 4 #################### +layer { bottom: "res4b22" top: "score_side4" name: "score_side4" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side4" top: "score_side4_up" type: "Deconvolution" name: "upsample_side4" + convolution_param { kernel_size: 16 stride: 8 pad: 4 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s4" bottom: "score_side4_up" bottom: "label" top:"side4_loss" loss_weight: 1} + +################## DSN conv 5 #################### +layer { bottom: "res5c" top: "score_side5" name: "score_side5" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side5" top: "score_side5_up" type: "Deconvolution" name: "upsample_side5" + convolution_param { kernel_size: 16 stride: 8 pad: 4 num_output: 19 group: 19 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s5" bottom: "score_side5_up" bottom: "label" top:"side5_loss" loss_weight: 1} + +################## Sliced concat of side activisions #################### +layer { name: "slicer_side1" type: "Slice" bottom: "score_side1" + top: "score_s1_cls1" top: "score_s1_cls2" top: "score_s1_cls3" top: "score_s1_cls4" top: "score_s1_cls5" + top: "score_s1_cls6" top: "score_s1_cls7" top: "score_s1_cls8" top: "score_s1_cls9" top: "score_s1_cls10" + top: "score_s1_cls11" top: "score_s1_cls12" top: "score_s1_cls13" top: "score_s1_cls14" top: "score_s1_cls15" + top: "score_s1_cls16" top: "score_s1_cls17" top: "score_s1_cls18" top: "score_s1_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side2" type: "Slice" bottom: "score_side2_up" + top: "score_s2_cls1" top: "score_s2_cls2" top: "score_s2_cls3" top: "score_s2_cls4" top: "score_s2_cls5" + top: "score_s2_cls6" top: "score_s2_cls7" top: "score_s2_cls8" top: "score_s2_cls9" top: "score_s2_cls10" + top: "score_s2_cls11" top: "score_s2_cls12" top: "score_s2_cls13" top: "score_s2_cls14" top: "score_s2_cls15" + top: "score_s2_cls16" top: "score_s2_cls17" top: "score_s2_cls18" top: "score_s2_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side3" type: "Slice" bottom: "score_side3_up" + top: "score_s3_cls1" top: "score_s3_cls2" top: "score_s3_cls3" top: "score_s3_cls4" top: "score_s3_cls5" + top: "score_s3_cls6" top: "score_s3_cls7" top: "score_s3_cls8" top: "score_s3_cls9" top: "score_s3_cls10" + top: "score_s3_cls11" top: "score_s3_cls12" top: "score_s3_cls13" top: "score_s3_cls14" top: "score_s3_cls15" + top: "score_s3_cls16" top: "score_s3_cls17" top: "score_s3_cls18" top: "score_s3_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side4" type: "Slice" bottom: "score_side4_up" + top: "score_s4_cls1" top: "score_s4_cls2" top: "score_s4_cls3" top: "score_s4_cls4" top: "score_s4_cls5" + top: "score_s4_cls6" top: "score_s4_cls7" top: "score_s4_cls8" top: "score_s4_cls9" top: "score_s4_cls10" + top: "score_s4_cls11" top: "score_s4_cls12" top: "score_s4_cls13" top: "score_s4_cls14" top: "score_s4_cls15" + top: "score_s4_cls16" top: "score_s4_cls17" top: "score_s4_cls18" top: "score_s4_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_side5_up" + top: "score_s5_cls1" top: "score_s5_cls2" top: "score_s5_cls3" top: "score_s5_cls4" top: "score_s5_cls5" + top: "score_s5_cls6" top: "score_s5_cls7" top: "score_s5_cls8" top: "score_s5_cls9" top: "score_s5_cls10" + top: "score_s5_cls11" top: "score_s5_cls12" top: "score_s5_cls13" top: "score_s5_cls14" top: "score_s5_cls15" + top: "score_s5_cls16" top: "score_s5_cls17" top: "score_s5_cls18" top: "score_s5_cls19" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 } } + +layer { name: "concat_clsall" type: "Concat" top: "score_concat_clsall" + bottom: "score_s1_cls1" bottom: "score_s2_cls1" bottom: "score_s3_cls1" bottom: "score_s4_cls1" bottom: "score_s5_cls1" + bottom: "score_s1_cls2" bottom: "score_s2_cls2" bottom: "score_s3_cls2" bottom: "score_s4_cls2" bottom: "score_s5_cls2" + bottom: "score_s1_cls3" bottom: "score_s2_cls3" bottom: "score_s3_cls3" bottom: "score_s4_cls3" bottom: "score_s5_cls3" + bottom: "score_s1_cls4" bottom: "score_s2_cls4" bottom: "score_s3_cls4" bottom: "score_s4_cls4" bottom: "score_s5_cls4" + bottom: "score_s1_cls5" bottom: "score_s2_cls5" bottom: "score_s3_cls5" bottom: "score_s4_cls5" bottom: "score_s5_cls5" + bottom: "score_s1_cls6" bottom: "score_s2_cls6" bottom: "score_s3_cls6" bottom: "score_s4_cls6" bottom: "score_s5_cls6" + bottom: "score_s1_cls7" bottom: "score_s2_cls7" bottom: "score_s3_cls7" bottom: "score_s4_cls7" bottom: "score_s5_cls7" + bottom: "score_s1_cls8" bottom: "score_s2_cls8" bottom: "score_s3_cls8" bottom: "score_s4_cls8" bottom: "score_s5_cls8" + bottom: "score_s1_cls9" bottom: "score_s2_cls9" bottom: "score_s3_cls9" bottom: "score_s4_cls9" bottom: "score_s5_cls9" + bottom: "score_s1_cls10" bottom: "score_s2_cls10" bottom: "score_s3_cls10" bottom: "score_s4_cls10" bottom: "score_s5_cls10" + bottom: "score_s1_cls11" bottom: "score_s2_cls11" bottom: "score_s3_cls11" bottom: "score_s4_cls11" bottom: "score_s5_cls11" + bottom: "score_s1_cls12" bottom: "score_s2_cls12" bottom: "score_s3_cls12" bottom: "score_s4_cls12" bottom: "score_s5_cls12" + bottom: "score_s1_cls13" bottom: "score_s2_cls13" bottom: "score_s3_cls13" bottom: "score_s4_cls13" bottom: "score_s5_cls13" + bottom: "score_s1_cls14" bottom: "score_s2_cls14" bottom: "score_s3_cls14" bottom: "score_s4_cls14" bottom: "score_s5_cls14" + bottom: "score_s1_cls15" bottom: "score_s2_cls15" bottom: "score_s3_cls15" bottom: "score_s4_cls15" bottom: "score_s5_cls15" + bottom: "score_s1_cls16" bottom: "score_s2_cls16" bottom: "score_s3_cls16" bottom: "score_s4_cls16" bottom: "score_s5_cls16" + bottom: "score_s1_cls17" bottom: "score_s2_cls17" bottom: "score_s3_cls17" bottom: "score_s4_cls17" bottom: "score_s5_cls17" + bottom: "score_s1_cls18" bottom: "score_s2_cls18" bottom: "score_s3_cls18" bottom: "score_s4_cls18" bottom: "score_s5_cls18" + bottom: "score_s1_cls19" bottom: "score_s2_cls19" bottom: "score_s3_cls19" bottom: "score_s4_cls19" bottom: "score_s5_cls19" + concat_param { axis: 1 } } + +layer { bottom: "score_concat_clsall" top: "score_fuse_clsall" name: "side_fusion" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 19 group: 19 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.2} bias_filler { type: "constant" value: 0 } } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_f" bottom: "score_fuse_clsall" bottom: "label" top:"fuse_loss" loss_weight: 1} diff --git a/CASENet/cityscapes/solve.py b/CASENet/cityscapes/solve.py new file mode 100644 index 0000000..1bbf345 --- /dev/null +++ b/CASENet/cityscapes/solve.py @@ -0,0 +1,37 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +import argparse +import os +import sys + +parser = argparse.ArgumentParser(sys.argv[0]) +parser.add_argument("solver_prototxt_file", type=str, help="path to the solver prototxt file") +parser.add_argument( + "-c", + "--pycaffe_folder", + type=str, + default="../../code/python", + help="pycaffe folder that contains the caffe/_caffe.so file", +) +parser.add_argument( + "-m", "--init_model", type=str, default="./model/init_res_coco.caffemodel", help="path to the initial caffemodel" +) +parser.add_argument("-g", "--gpu", type=int, default=0, help="use which gpu device (default=0)") +args = parser.parse_args(sys.argv[1:]) + +assert os.path.exists(args.solver_prototxt_file) +assert os.path.exists(args.init_model) + +if os.path.exists(os.path.join(args.pycaffe_folder, "caffe/_caffe.so")): + sys.path.insert(0, args.pycaffe_folder) +import caffe + +caffe.set_mode_gpu() +caffe.set_device(args.gpu) + +solver = caffe.SGDSolver(args.solver_prototxt_file) +solver.net.copy_from(args.init_model) + +solver.solve() diff --git a/CASENet/cityscapes/test.py b/CASENet/cityscapes/test.py new file mode 100644 index 0000000..612fd61 --- /dev/null +++ b/CASENet/cityscapes/test.py @@ -0,0 +1,127 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# test CASENet: +# python test.py ./config/test_CASENet.prototxt ./model/CASENet_iter_40000.caffemodel -l ~/datasets/Cityscapes/valEdgeBin.txt -d ~/Dataset/Cityscapes -o ./result_CASENet -c ../../caffe/build/install/python +# valEdgeBin.txt file can be simply a list file of all the validation images in Cityscapes, each line storeing a single file relative to the Cityscapes dataset's root folder, such as: +# /leftImg8bit/val/frankfurt/frankfurt_000000_002963_leftImg8bit.png + +import argparse +import os +import sys + +import cv2 +import numpy as np + +parser = argparse.ArgumentParser(sys.argv[0]) +parser.add_argument('deploy_prototxt_file', type=str, + help="path to the deploy prototxt file") +parser.add_argument('model', type=str, + help="path to the caffemodel containing the trained weights") +parser.add_argument('-l', '--image_list', type=str, default='', + help="list of image files to be tested") +parser.add_argument('-f', '--image_file', type=str, default='', + help="a single image file to be tested") +parser.add_argument('-d', '--image_dir', type=str, default='', + help="root folder of the image files in the list or the single image file") +parser.add_argument('-o', '--output_dir', type=str, default='.', + help="folder to store the test results") +parser.add_argument('-c', '--pycaffe_folder', type=str, default='../../code/python', + help="pycaffe folder that contains the caffe/_caffe.so file") +parser.add_argument('-g', '--gpu', type=int, default=0, + help="use which gpu device (default=0)") +args = parser.parse_args(sys.argv[1:]) + +assert(os.path.exists(args.deploy_prototxt_file)) +assert(os.path.exists(args.model)) + +if os.path.exists(os.path.join(args.pycaffe_folder,'caffe/_caffe.so')): + sys.path.insert(0, args.pycaffe_folder) +import caffe + +caffe.set_mode_gpu() +caffe.set_device(args.gpu) + +# load input path +if os.path.exists(args.image_list): + with open(args.image_list) as f: + test_lst = [x.strip().split()[0] for x in f.readlines()] + if args.image_dir!='': + test_lst = [ + args.image_dir+x if os.path.isabs(x) + else os.path.join(args.image_dir, x) + for x in test_lst] +else: + image_file = os.path.join(args.image_dir, args.image_file) + if os.path.exists(image_file): + test_lst = [os.path.join(args.image_dir, os.path.basename(image_file))] + else: + raise IOError('nothing to be tested!') + +# load net +net = caffe.Net(args.deploy_prototxt_file, args.model, caffe.TEST) +num_cls = 19 +image_h = 1024 # Need to pre-determine test image size +image_w = 2048 # Need to pre-determine test image size +patch_h = 512 +patch_w = 512 +step_size_y = 256 +step_size_x = 384 +pad = 16 +if ((2*pad)%8)!=0: + raise ValueError('Pad number must be able to be divided by 8!') +step_num_y = (image_h-patch_h+0.0)/step_size_y +step_num_x = (image_w-patch_w+0.0)/step_size_x +if(round(step_num_y)!=step_num_y): + raise ValueError('Vertical sliding size can not be divided by step size!') +if(round(step_num_x)!=step_num_x): + raise ValueError('Horizontal sliding size can not be divided by step size!') +step_num_y=int(step_num_y) +step_num_x=int(step_num_x) +mean_value = (104.008, 116.669, 122.675) #BGR + +for idx_img in xrange(len(test_lst)): + in_ = cv2.imread(test_lst[idx_img]).astype(np.float32) + width, height, chn = in_.shape[1], in_.shape[0], in_.shape[2] + im_array = cv2.copyMakeBorder(in_, pad, pad, pad, pad, cv2.BORDER_REFLECT) + if(height!=image_h or width!=image_w): + raise ValueError('Input image size must be'+str(image_h)+'x'+str(image_w)+'!') + + # Perform patch-by-patch testing + score_pred = np.zeros((height, width, num_cls)) + mat_count = np.zeros((height, width, 1)) + for i in range(0, step_num_y+1): + offset_y = i*step_size_y + for j in range(0, step_num_x+1): + offset_x = j*step_size_x + # crop overlapped regions from the image + in_ = np.array(im_array[offset_y:offset_y+patch_h+2*pad, offset_x:offset_x+patch_w+2*pad, :]) + in_ -= np.array(mean_value) + in_ = in_.transpose((2,0,1)) # HxWx3 -> 3xHxW + in_ = in_[np.newaxis, ...] # 3xHxW -> 1x3xHxW + net.blobs['data'].reshape(*in_.shape) + net.blobs['data'].data[...] = in_ + net.forward() + + # add the prediction to score_pred and increase count by 1 + score_pred[offset_y:offset_y+patch_h, offset_x:offset_x+patch_w, :] += \ + np.transpose(net.blobs['score_output'].data[0], (1, 2, 0))[pad:-pad,pad:-pad,:] + mat_count[offset_y:offset_y+patch_h, offset_x:offset_x+patch_w, 0] += 1.0 + score_pred = np.divide(score_pred, mat_count) + + img_base_name = os.path.basename(test_lst[idx_img]) + img_result_name = os.path.splitext(img_base_name)[0]+'.png' + for idx_cls in xrange(num_cls): + im = (score_pred[:,:,idx_cls]*255).astype(np.uint8) + result_root = os.path.join(args.output_dir, 'class_'+str(idx_cls)) + if not os.path.exists(result_root): + os.makedirs(result_root) + cv2.imwrite( + os.path.join(result_root, img_result_name), + im) + + print 'processed: '+test_lst[idx_img] + sys.stdout.flush() + +print 'Done!' diff --git a/CASENet/cityscapes/visualize_multilabel.py b/CASENet/cityscapes/visualize_multilabel.py new file mode 100644 index 0000000..8a456dc --- /dev/null +++ b/CASENet/cityscapes/visualize_multilabel.py @@ -0,0 +1,355 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +import argparse +import multiprocessing + +#visualize CASENet (Simple, fast) +# python visualize_multilabel.py ~/datasets/Cityscapes/leftImg8bit/val/frankfurt/frankfurt_000000_000294_leftImg8bit.png +#visualize CASENet (Full, slow) +# python visualize_multilabel.py ~/datasets/Cityscapes/leftImg8bit/val/frankfurt/frankfurt_000000_000294_leftImg8bit.png -g ~/datasets/Cityscapes/gtFine/val/frankfurt/frankfurt_000000_000294_gtFine_edge.bin +import os +import struct +import sys +import time + +import cv2 +import numpy as np +import numpy.random as npr + + +class Timer: + def __init__(self, unit=1): + self.start = 0 + self.unit = unit + self.unit_name = 's' if unit==1 else 'ms' if unit==1000 else '(%fs)'%(1.0/unit) + + def tic(self): + self.start = time.time() + + def toc(self, verbose=True, tag=''): + end = time.time() + ret = (end-self.start) * self.unit + if verbose or len(tag)>0: + print(tag+': %.3f'%ret+self.unit_name) + return ret + + +def output_color_definition_for_latex(hsv_class, labeli=None,names=None): + if names is None: + names = get_class_name_cityscape() + n_colors = len(hsv_class) + if labeli is None: + rgb_list=np.array([[[hi,255,255] for hi in hsv_class]], dtype=np.uint8) + rgb_list = cv2.cvtColor(rgb_list, cv2.COLOR_HSV2RGB).tolist()[0] + for (rgb,i) in zip(rgb_list, range(0, n_colors)): + print '\definecolor{blk_color_%d}{rgb}{%.3f,%.3f,%.3f}' % (i, rgb[0]/255., rgb[1]/255., rgb[2]/255.) + for i in range(0, n_colors): + print '\crule[blk_color_%d]{%.3f\columnwidth}{%.3f\columnwidth}'%(i, 1.0/n_colors, 1.0/n_colors) + else: + n_labels = len(labeli) + the_names=[] + the_rgbs=[] + for i in range(0,n_labels): + the_label = labeli[i] + the_hue = 0.0 + the_cnt = 0 + the_name = '' + for k in range(0,n_colors): + if ((the_label >> k) & 1) == 1: + the_hue += hsv_class[k] + the_cnt += 1 + the_name += names[k]+'+' + the_hue /= the_cnt if the_cnt>1 else 1 + rgb = np.array([[[the_hue,255,255]]],dtype=np.uint8) + the_rgbs.append(cv2.cvtColor(rgb,cv2.COLOR_HSV2RGB)[0,0].tolist()) + the_names.append(the_name) + for (rgb,i) in zip(the_rgbs, range(0,n_labels)): + print '\definecolor{blk_color_%d}{rgb}{%.3f,%.3f,%.3f}' % (i, rgb[0] / 255., rgb[1] / 255., rgb[2] / 255.) + for (name,i) in zip(the_names, range(0,n_labels)): + print ('\cellcolor{blk_color_%d} '%i)+name[:-1]+' & ' + + +def gen_hsv_class_cityscape(): + return np.array([ + 359, # road + 320, # sidewalk + 40, # building + 80, # wall + 90, # fence + 10, # pole + 20, # traffic light + 30, # traffic sign + 140, # vegetation + 340, # terrain + 280, # sky + 330, # person + 350, # rider + 120, # car + 110, # truck + 130, # bus + 150, # train + 160, # motorcycle + 170 # bike + ])/2.0 + + +def get_class_name_cityscape(): + return ['road', + 'sidewalk', + 'building', + 'wall', + 'fence', + 'pole', + 'traffic light', + 'traffic sign', + 'vegetation', + 'terrain', + 'sky', + 'person', + 'rider', + 'car', + 'truck', + 'bus', + 'train', + 'motorcycle', + 'bicycle'] + + +def gen_hsv_class(K_class, h_min=1, h_max=179, do_shuffle=False, do_random=False): + hsv_class = np.linspace(h_min, h_max, K_class, False, dtype=np.int32) + if do_shuffle: + npr.shuffle(hsv_class) + if do_random: + hsv_class = npr.randint(h_min, h_max, K_class, dtype=np.int32) + return hsv_class + + +def save_each_blended_probk(fname_prefix, prob_gt, prob, thresh=0.5, names=None): + if names is None: + names = get_class_name_cityscape() + rows,cols,nchns = prob.shape + H_TP = 60.0 + H_FN = 120.0 + # H_FP_OR_TN = 0 + for k in range(0, nchns): + namek = fname_prefix + names[k] + '.png' + probk = prob[:,:,k] + probk_gt = prob_gt[:,:,k] + + label_pos = probk_gt>0 + label_neg = probk_gt<=0 + pred_pos = probk>thresh + pred_neg = probk<=thresh + + blendk_hsv = np.zeros((rows,cols,3), dtype=np.float32) + blendk_hsv[:,:,0] = label_pos*(pred_pos*H_TP + pred_neg*H_FN) #classification result type + blendk_hsv[:,:,1] = label_pos*(pred_pos*probk*255.0 + pred_neg*(1-probk)*255.0) + label_neg*probk*255.0 #probability + blendk_hsv[:,:,2] = 255 + blend = cv2.cvtColor(blendk_hsv.astype(np.uint8), cv2.COLOR_HSV2BGR) + + cv2.imwrite(namek, blend.astype(np.uint8)) + + +def thresh_and_select_k_largest_only(prob, k=2, thresh=0.0): + prob[prob <= thresh] = 0 + + rows = prob.shape[0] + cols = prob.shape[1] + chns = prob.shape[2] + + if k<=0 or k>=chns: + return prob + + ii, jj = np.meshgrid(range(0,rows), range(0,cols), indexing='ij') + + prob_out = np.zeros(prob.shape, dtype=np.float32) + for ik in range(0, k): + idx_max = np.argmax(prob, axis=2) + prob_out[ii, jj, idx_max] = prob[ii, jj, idx_max] + prob[ii, jj, idx_max] = -1 + return prob_out + + +def vis_multilabel(prob, img_h, img_w, K_class, hsv_class=None, use_white_background=False): + label_hsv = np.zeros((img_h, img_w, 3), dtype=np.float32) + prob_sum = np.zeros((img_h, img_w), dtype=np.float32) + prob_edge = np.zeros((img_h, img_w), dtype=np.float32) + + use_abs_color = True + if hsv_class is None: + n_colors = 0 + use_abs_color = False + for k in range(0, K_class): + if prob[:, :, k].max() > 0: + n_colors += 1 + hsv_class = gen_hsv_class(n_colors) + print hsv_class + + i_color = 0 + for k in range(0, K_class): + prob_k = prob[:, :, k].astype(np.float32) + if prob_k.max() == 0: + continue + hi = hsv_class[ k if use_abs_color else i_color ] + i_color += 1 + # print '%d: %f' % (k, hi) + label_hsv[:, :, 0] += prob_k * hi # H + prob_sum += prob_k + prob_edge = np.maximum(prob_edge, prob_k) + + prob_sum[prob_sum == 0] = 1.0 + label_hsv[:, :, 0] /= prob_sum + if use_white_background: + label_hsv[:, :, 1] = prob_edge * 255 + label_hsv[:, :, 2] = 255 + else: + label_hsv[:, :, 1] = 255 + label_hsv[:, :, 2] = prob_edge * 255 + + label_bgr = cv2.cvtColor(label_hsv.astype(np.uint8), cv2.COLOR_HSV2BGR) + return label_bgr + + +def bits2array(vals): + # print vals + return [[(valj >> k) & 1 + for k in xrange(0, 32)] + for valj in vals] + + +def load_gt(fname_gt, img_h, img_w, use_inner_pool=False): + # timer = Timer(1000) + # timer.tic() + with open(fname_gt, 'rb') as fp: + bytes = fp.read(img_h * img_w * 4) + # timer.toc(tag='[load_gt.open]') + + # timer.tic() + labeli = np.array(struct.unpack('%dI' % (len(bytes) / 4), bytes)).reshape((img_h, img_w)) + # timer.toc(tag='[load_gt.unpack]') + + #find unique labels + # timer.tic() + labeli_unique, labeli_count = np.unique(labeli, return_counts=True) + sidx = np.argsort(labeli_count)[::-1] + labeli_unique=labeli_unique[sidx] + # labeli_count=labeli_count[sidx] + # timer.toc(tag='[load_gt.unique]') + + # timer.tic() + nbits = 32 + + if use_inner_pool: + # prob = np.float32(map(bits2array,labeli)) + pool = multiprocessing.Pool() + prob = pool.map(bits2array, labeli.tolist()) + pool.close() + pool.join() + prob = np.float32(prob) + else: + prob = np.float32([[[(labeli[i, j] >> k) & 1 + for k in xrange(0, nbits)] + for j in xrange(0, img_w)] + for i in xrange(0, img_h)]) + # timer.toc(tag='[load_gt.for]') + return prob, labeli_unique[1:] if labeli_unique[0]==0 else labeli_unique + + +def load_result(img_h, img_w, result_fmt, K_class, idx_base): + prob = np.zeros((img_h, img_w, K_class), dtype=np.float32) + for k in xrange(K_class): + prob_k = cv2.imread(result_fmt%(k+idx_base), cv2.IMREAD_GRAYSCALE) + prob[:,:,k] = prob_k.astype(np.float32) / 255. + return prob + + +def main(out_name=None, raw_name=None, gt_name=None, + result_fmt=None, thresh=0.5, do_gt=True, select_only_k = 2, + do_each_comp = False, K_class = 19, idx_base = 0, save_input=False, dryrun=False): + oldstdout = sys.stdout + if do_gt: + sys.stdout = open(out_name+'.log', 'w') + + hsv_class = gen_hsv_class_cityscape() + class_names = get_class_name_cityscape() + + timer = Timer(1000) + + #load files + image = cv2.imread(raw_name) + img_h, img_w = (image.shape[0], image.shape[1]) + if do_gt: + # timer.tic() + prob_gt, labeli = load_gt(gt_name, img_h, img_w) + # timer.toc(tag='[load_gt]') + output_color_definition_for_latex(hsv_class, labeli,names=class_names) + prob = load_result(img_h, img_w, result_fmt, K_class, idx_base) + + # vis gt and blended_gt + if do_gt: + # timer.tic() + label_bgr = vis_multilabel(prob_gt, img_h, img_w, K_class, hsv_class, use_white_background=True) + # timer.toc(tag='[vis_multilabel for gt]') + if dryrun: + print 'writing: '+out_name+'.gt.png' + else: + cv2.imwrite(out_name+'.gt.png', label_bgr) + if save_input: + if dryrun: + print 'writing: '+out_name+'.input.png' + else: + cv2.imwrite(out_name+'.input.png', image) + # blended = cv2.addWeighted(image, 0.2, label_bgr, 0.8, 0) + # cv2.imwrite(fout_prefix+'_blend_gt.png', blended) + + # # vis result + if select_only_k>0 or thresh>0.0: + # timer.tic() + prob_out = thresh_and_select_k_largest_only(prob, select_only_k, thresh) + prob = prob_out + # timer.toc(tag='[thresh_and_select_k_largest_only]') + if do_each_comp and do_gt: + # timer.tic() + save_each_blended_probk(out_name+'.comp.',prob_gt,prob,names=class_names) + # timer.toc(tag='[save_each_blended_probk]') + label_bgr = vis_multilabel(prob, img_h, img_w, K_class, hsv_class, use_white_background=True) + if dryrun: + print 'writing: '+out_name + else: + cv2.imwrite(out_name, label_bgr) + + print 'finished: '+raw_name + sys.stdout = oldstdout + + +if __name__=='__main__': + parser = argparse.ArgumentParser(sys.argv[0]) + parser.add_argument('raw_name', type=str, help="input rgb filename") + parser.add_argument('-o','--output_folder', type=str, default='./visualize/thresh0.6/CASENet', + help="visualization output folder") + parser.add_argument('-g', '--gt_name', type=str, default=None, + help="full path to the corresponding multi-label ground truth file") + parser.add_argument('-f', '--result_fmt', type=str, default='./result_CASENet/class_%d/', + help="folders storing testing results for each class") + parser.add_argument('-t', '--thresh', type=float, default=0.6, + help="set any probability<=thresh to 0") + parser.add_argument('-c', '--do_each_comp', type=int, default=1, + help="if gt_name is not None, whether to visualize each class component (1) or not (0)") + args = parser.parse_args(sys.argv[1:]) + + if not os.path.exists(args.output_folder): + os.makedirs(args.output_folder) + + namei = os.path.basename(args.raw_name) + print namei + main(out_name=os.path.join(args.output_folder, namei), + raw_name=args.raw_name, + gt_name=args.gt_name, + result_fmt=args.result_fmt+'%s'%namei, + do_gt=args.gt_name is not None, + thresh=args.thresh, + select_only_k=2, + do_each_comp = args.do_each_comp) + print '========================================' diff --git a/CASENet/sbd/config/solver_Basic.prototxt b/CASENet/sbd/config/solver_Basic.prototxt new file mode 100644 index 0000000..a36ecae --- /dev/null +++ b/CASENet/sbd/config/solver_Basic.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_Basic.prototxt" +lr_policy: "step" +base_lr: 1.0e-7 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 100000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/Basic" +solver_mode: GPU diff --git a/CASENet/sbd/config/solver_CASENet-.prototxt b/CASENet/sbd/config/solver_CASENet-.prototxt new file mode 100644 index 0000000..fe2a6a6 --- /dev/null +++ b/CASENet/sbd/config/solver_CASENet-.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_CASENet-.prototxt" +lr_policy: "step" +base_lr: 1.0e-7 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 100000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/CASENet-" +solver_mode: GPU diff --git a/CASENet/sbd/config/solver_CASENet.prototxt b/CASENet/sbd/config/solver_CASENet.prototxt new file mode 100644 index 0000000..0ef07e5 --- /dev/null +++ b/CASENet/sbd/config/solver_CASENet.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_CASENet.prototxt" +lr_policy: "step" +base_lr: 1.0e-7 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 100000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/CASENet" +solver_mode: GPU diff --git a/CASENet/sbd/config/solver_DSN.prototxt b/CASENet/sbd/config/solver_DSN.prototxt new file mode 100644 index 0000000..9f5c5bf --- /dev/null +++ b/CASENet/sbd/config/solver_DSN.prototxt @@ -0,0 +1,18 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +train_net: "config/train_DSN.prototxt" +lr_policy: "step" +base_lr: 1.0e-7 +gamma: 0.1 +iter_size: 10 +stepsize: 10000 +average_loss: 20 +display: 1 +max_iter: 100000 +momentum: 0.9 +weight_decay: 0.0005 +snapshot: 2000 +snapshot_prefix: "model/DSN" +solver_mode: GPU diff --git a/CASENet/sbd/config/test_Basic.prototxt b/CASENet/sbd/config/test_Basic.prototxt new file mode 100644 index 0000000..530223f --- /dev/null +++ b/CASENet/sbd/config/test_Basic.prototxt @@ -0,0 +1,1550 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "Basic_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 500 +input_dim: 500 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { bottom: "score_cls_side5_crop" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/sbd/config/test_CASENet-.prototxt b/CASENet/sbd/config/test_CASENet-.prototxt new file mode 100644 index 0000000..43301b9 --- /dev/null +++ b/CASENet/sbd/config/test_CASENet-.prototxt @@ -0,0 +1,1621 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet-_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 500 +input_dim: 500 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side2_up" bottom: "data" top: "score_edge_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side3_up" bottom: "data" top: "score_edge_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_crop" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" top: "score_cls_s5_c20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +#shared concatenation +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c20" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_ce_fuse" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/sbd/config/test_CASENet.prototxt b/CASENet/sbd/config/test_CASENet.prototxt new file mode 100644 index 0000000..2df539b --- /dev/null +++ b/CASENet/sbd/config/test_CASENet.prototxt @@ -0,0 +1,1621 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 500 +input_dim: 500 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side2_up" bottom: "data" top: "score_edge_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side3_up" bottom: "data" top: "score_edge_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_crop" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" top: "score_cls_s5_c20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +#shared concatenation +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c20" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_ce_fuse" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/sbd/config/test_DSN.prototxt b/CASENet/sbd/config/test_DSN.prototxt new file mode 100644 index 0000000..f7bf6e8 --- /dev/null +++ b/CASENet/sbd/config/test_DSN.prototxt @@ -0,0 +1,1675 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "DSN_ResNet101" + +###################### Data Input Block ##################### +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 500 +input_dim: 500 + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## DSN conv 1 #################### +layer { bottom: "conv1" top: "score_side1" name: "score_side1" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +################## DSN conv 2 #################### +layer { bottom: "res2c" top: "score_side2" name: "score_side2" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side2" top: "score_side2_up" type: "Deconvolution" name: "upsample_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side2_up" bottom: "data" top: "score_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +################## DSN conv 3 #################### +layer { bottom: "res3b3" top: "score_side3" name: "score_side3" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side3" top: "score_side3_up" type: "Deconvolution" name: "upsample_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side3_up" bottom: "data" top: "score_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +################## DSN conv 4 #################### +layer { bottom: "res4b22" top: "score_side4" name: "score_side4" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side4" top: "score_side4_up" type: "Deconvolution" name: "upsample_side4" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side4_up" bottom: "data" top: "score_side4_crop" type: "Crop" name: "crop_side4" + crop_param { axis: 2 offset: 4 offset: 4 } } + +################## DSN conv 5 #################### +layer { bottom: "res5c" top: "score_side5" name: "score_side5" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side5" top: "score_side5_up" type: "Deconvolution" name: "upsample_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side5_up" bottom: "data" top: "score_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +################## Sliced concat of side activisions #################### + +layer { name: "slicer_side1" type: "Slice" bottom: "score_side1" + top: "score_s1_cls1" top: "score_s1_cls2" top: "score_s1_cls3" top: "score_s1_cls4" top: "score_s1_cls5" + top: "score_s1_cls6" top: "score_s1_cls7" top: "score_s1_cls8" top: "score_s1_cls9" top: "score_s1_cls10" + top: "score_s1_cls11" top: "score_s1_cls12" top: "score_s1_cls13" top: "score_s1_cls14" top: "score_s1_cls15" + top: "score_s1_cls16" top: "score_s1_cls17" top: "score_s1_cls18" top: "score_s1_cls19" top: "score_s1_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side2" type: "Slice" bottom: "score_side2_crop" + top: "score_s2_cls1" top: "score_s2_cls2" top: "score_s2_cls3" top: "score_s2_cls4" top: "score_s2_cls5" + top: "score_s2_cls6" top: "score_s2_cls7" top: "score_s2_cls8" top: "score_s2_cls9" top: "score_s2_cls10" + top: "score_s2_cls11" top: "score_s2_cls12" top: "score_s2_cls13" top: "score_s2_cls14" top: "score_s2_cls15" + top: "score_s2_cls16" top: "score_s2_cls17" top: "score_s2_cls18" top: "score_s2_cls19" top: "score_s2_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side3" type: "Slice" bottom: "score_side3_crop" + top: "score_s3_cls1" top: "score_s3_cls2" top: "score_s3_cls3" top: "score_s3_cls4" top: "score_s3_cls5" + top: "score_s3_cls6" top: "score_s3_cls7" top: "score_s3_cls8" top: "score_s3_cls9" top: "score_s3_cls10" + top: "score_s3_cls11" top: "score_s3_cls12" top: "score_s3_cls13" top: "score_s3_cls14" top: "score_s3_cls15" + top: "score_s3_cls16" top: "score_s3_cls17" top: "score_s3_cls18" top: "score_s3_cls19" top: "score_s3_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side4" type: "Slice" bottom: "score_side4_crop" + top: "score_s4_cls1" top: "score_s4_cls2" top: "score_s4_cls3" top: "score_s4_cls4" top: "score_s4_cls5" + top: "score_s4_cls6" top: "score_s4_cls7" top: "score_s4_cls8" top: "score_s4_cls9" top: "score_s4_cls10" + top: "score_s4_cls11" top: "score_s4_cls12" top: "score_s4_cls13" top: "score_s4_cls14" top: "score_s4_cls15" + top: "score_s4_cls16" top: "score_s4_cls17" top: "score_s4_cls18" top: "score_s4_cls19" top: "score_s4_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_side5_crop" + top: "score_s5_cls1" top: "score_s5_cls2" top: "score_s5_cls3" top: "score_s5_cls4" top: "score_s5_cls5" + top: "score_s5_cls6" top: "score_s5_cls7" top: "score_s5_cls8" top: "score_s5_cls9" top: "score_s5_cls10" + top: "score_s5_cls11" top: "score_s5_cls12" top: "score_s5_cls13" top: "score_s5_cls14" top: "score_s5_cls15" + top: "score_s5_cls16" top: "score_s5_cls17" top: "score_s5_cls18" top: "score_s5_cls19" top: "score_s5_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "concat_clsall" type: "Concat" top: "score_concat_clsall" + bottom: "score_s1_cls1" bottom: "score_s2_cls1" bottom: "score_s3_cls1" bottom: "score_s4_cls1" bottom: "score_s5_cls1" + bottom: "score_s1_cls2" bottom: "score_s2_cls2" bottom: "score_s3_cls2" bottom: "score_s4_cls2" bottom: "score_s5_cls2" + bottom: "score_s1_cls3" bottom: "score_s2_cls3" bottom: "score_s3_cls3" bottom: "score_s4_cls3" bottom: "score_s5_cls3" + bottom: "score_s1_cls4" bottom: "score_s2_cls4" bottom: "score_s3_cls4" bottom: "score_s4_cls4" bottom: "score_s5_cls4" + bottom: "score_s1_cls5" bottom: "score_s2_cls5" bottom: "score_s3_cls5" bottom: "score_s4_cls5" bottom: "score_s5_cls5" + bottom: "score_s1_cls6" bottom: "score_s2_cls6" bottom: "score_s3_cls6" bottom: "score_s4_cls6" bottom: "score_s5_cls6" + bottom: "score_s1_cls7" bottom: "score_s2_cls7" bottom: "score_s3_cls7" bottom: "score_s4_cls7" bottom: "score_s5_cls7" + bottom: "score_s1_cls8" bottom: "score_s2_cls8" bottom: "score_s3_cls8" bottom: "score_s4_cls8" bottom: "score_s5_cls8" + bottom: "score_s1_cls9" bottom: "score_s2_cls9" bottom: "score_s3_cls9" bottom: "score_s4_cls9" bottom: "score_s5_cls9" + bottom: "score_s1_cls10" bottom: "score_s2_cls10" bottom: "score_s3_cls10" bottom: "score_s4_cls10" bottom: "score_s5_cls10" + bottom: "score_s1_cls11" bottom: "score_s2_cls11" bottom: "score_s3_cls11" bottom: "score_s4_cls11" bottom: "score_s5_cls11" + bottom: "score_s1_cls12" bottom: "score_s2_cls12" bottom: "score_s3_cls12" bottom: "score_s4_cls12" bottom: "score_s5_cls12" + bottom: "score_s1_cls13" bottom: "score_s2_cls13" bottom: "score_s3_cls13" bottom: "score_s4_cls13" bottom: "score_s5_cls13" + bottom: "score_s1_cls14" bottom: "score_s2_cls14" bottom: "score_s3_cls14" bottom: "score_s4_cls14" bottom: "score_s5_cls14" + bottom: "score_s1_cls15" bottom: "score_s2_cls15" bottom: "score_s3_cls15" bottom: "score_s4_cls15" bottom: "score_s5_cls15" + bottom: "score_s1_cls16" bottom: "score_s2_cls16" bottom: "score_s3_cls16" bottom: "score_s4_cls16" bottom: "score_s5_cls16" + bottom: "score_s1_cls17" bottom: "score_s2_cls17" bottom: "score_s3_cls17" bottom: "score_s4_cls17" bottom: "score_s5_cls17" + bottom: "score_s1_cls18" bottom: "score_s2_cls18" bottom: "score_s3_cls18" bottom: "score_s4_cls18" bottom: "score_s5_cls18" + bottom: "score_s1_cls19" bottom: "score_s2_cls19" bottom: "score_s3_cls19" bottom: "score_s4_cls19" bottom: "score_s5_cls19" + bottom: "score_s1_cls20" bottom: "score_s2_cls20" bottom: "score_s3_cls20" bottom: "score_s4_cls20" bottom: "score_s5_cls20" + concat_param { axis: 1 } } + +layer { bottom: "score_concat_clsall" top: "score_fuse_clsall" name: "side_fusion" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.2} bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_fuse_clsall" top: "score_output" name: "sigmoid_output" type: "Sigmoid" } + +layer { name: "silence" type: "Silence" bottom: "score_output" } diff --git a/CASENet/sbd/config/train_Basic.prototxt b/CASENet/sbd/config/train_Basic.prototxt new file mode 100644 index 0000000..622f387 --- /dev/null +++ b/CASENet/sbd/config/train_Basic.prototxt @@ -0,0 +1,1568 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "Basic_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 352 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug" + source: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug/train_aug.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_side5" bottom: "score_cls_side5_crop" bottom: "label" top: "loss_cls_side5" loss_weight: 1} diff --git a/CASENet/sbd/config/train_CASENet-.prototxt b/CASENet/sbd/config/train_CASENet-.prototxt new file mode 100644 index 0000000..0b2589e --- /dev/null +++ b/CASENet/sbd/config/train_CASENet-.prototxt @@ -0,0 +1,1639 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet-_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 352 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug" + source: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug/train_aug.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side2_up" bottom: "data" top: "score_edge_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side3_up" bottom: "data" top: "score_edge_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_crop" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" top: "score_cls_s5_c20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +#shared concatenation +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c20" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_fuse" bottom: "score_ce_fuse" bottom: "label" top: "loss_cls_fuse" loss_weight: 1} diff --git a/CASENet/sbd/config/train_CASENet.prototxt b/CASENet/sbd/config/train_CASENet.prototxt new file mode 100644 index 0000000..9db80f5 --- /dev/null +++ b/CASENet/sbd/config/train_CASENet.prototxt @@ -0,0 +1,1641 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "CASENet_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 352 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug" + source: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug/train_aug.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## Feature Side 1 #################### +layer { bottom: "conv1" top: "score_edge_side1" name: "score_edge_side1" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +################## Feature Side 2 #################### +layer { bottom: "res2c" top: "score_edge_side2" name: "score_edge_side2" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side2" top: "score_edge_side2_up" type: "Deconvolution" name: "upsample_edge_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side2_up" bottom: "data" top: "score_edge_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +################## Feature Side 3 #################### +layer { bottom: "res3b3" top: "score_edge_side3" name: "score_edge_side3" type: "Convolution" + convolution_param { num_output: 1 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_edge_side3" top: "score_edge_side3_up" type: "Deconvolution" name: "upsample_edge_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 1 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_edge_side3_up" bottom: "data" top: "score_edge_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +################## Loss Cls #################### +layer { bottom: "res5c" top: "score_cls_side5" name: "score_cls_side5" type: "Convolution" + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { bottom: "score_cls_side5" top: "score_cls_side5_up" type: "Deconvolution" name: "upsample_cls_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 bias_term: false weight_filler: { type: "bilinear" } } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_cls_side5_up" bottom: "data" top: "score_cls_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_side5" bottom: "score_cls_side5_crop" bottom: "label" top: "loss_cls_side5" loss_weight: 1} + +layer { name: "slicer_side5" type: "Slice" bottom: "score_cls_side5_crop" + top: "score_cls_s5_c1" top: "score_cls_s5_c2" top: "score_cls_s5_c3" top: "score_cls_s5_c4" top: "score_cls_s5_c5" + top: "score_cls_s5_c6" top: "score_cls_s5_c7" top: "score_cls_s5_c8" top: "score_cls_s5_c9" top: "score_cls_s5_c10" + top: "score_cls_s5_c11" top: "score_cls_s5_c12" top: "score_cls_s5_c13" top: "score_cls_s5_c14" top: "score_cls_s5_c15" + top: "score_cls_s5_c16" top: "score_cls_s5_c17" top: "score_cls_s5_c18" top: "score_cls_s5_c19" top: "score_cls_s5_c20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +#shared concatenation +layer { name: "concat_ce" type: "Concat" top: "score_ce_concat" + bottom: "score_cls_s5_c1" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c2" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c3" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c4" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c5" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c6" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c7" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c8" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c9" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c10" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c11" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c12" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c13" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c14" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c15" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c16" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c17" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c18" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c19" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + bottom: "score_cls_s5_c20" bottom: "score_edge_side1" bottom: "score_edge_side2_crop" bottom: "score_edge_side3_crop" + concat_param { axis: 1 } } + +layer { bottom: "score_ce_concat" top: "score_ce_fuse" name: "ce_fusion" type: "Convolution" + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.25} bias_filler { type: "constant" value: 0 } } + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "sigmoid_loss_mc_fuse" bottom: "score_ce_fuse" bottom: "label" top: "loss_cls_fuse" loss_weight: 1} diff --git a/CASENet/sbd/config/train_DSN.prototxt b/CASENet/sbd/config/train_DSN.prototxt new file mode 100644 index 0000000..012e3a7 --- /dev/null +++ b/CASENet/sbd/config/train_DSN.prototxt @@ -0,0 +1,1702 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: "DSN_ResNet101" + +###################### Data Input Block ##################### +layer { + name: "data" + type: "ImageSegData" + top: "data" + top: "label" + #top: "data_dim" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 352 + mean_value: 104.008 + mean_value: 116.669 + mean_value: 122.675 + } + image_data_param { + root_folder: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug" + source: "/homes/cfeng/data_root_at_cv0/zyu/Code/preprocessing/SBD/SBD_Aug/train_aug.txt" + batch_size: 1 + shuffle: true + label_type: PIXELML + num_label_chn: 1 + } +} + +###################### Convolution Block 1 ##################### +layer { bottom: "data" top: "conv1" name: "conv1" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 7 pad: 3 stride: 1 bias_term: false } + param { name: "conv1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "conv1" top: "conv1" name: "bn_conv1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn_conv1_0" lr_mult: 0 } param { name: "bn_conv1_1" lr_mult: 0 } param { name: "bn_conv1_2" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "scale_conv1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale_conv1_0" lr_mult: 0 } param { name: "scale_conv1_1" lr_mult: 0 } } + +layer { bottom: "conv1" top: "conv1" name: "conv1_relu" type: "ReLU"} + +###################### Convolution Block 2 ##################### +layer { bottom: "conv1" top: "pool1" name: "pool1" type: "Pooling" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } } + +layer { bottom: "pool1" top: "res2a_branch1" name: "res2a_branch1" type: "Convolution" + param { name: "res2a_branch1_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "bn2a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } param { name: "bn2a_branch1_0" lr_mult: 0 } + param { name: "bn2a_branch1_1" lr_mult: 0 } param { name: "bn2a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" top: "res2a_branch1" name: "scale2a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch1_0" lr_mult: 0 } param { name: "scale2a_branch1_1" lr_mult: 0 } } + +layer { bottom: "pool1" top: "res2a_branch2a" name: "res2a_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "bn2a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2a_0" lr_mult: 0 } param {name: "bn2a_branch2a_1" lr_mult: 0 } param { name: "bn2a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "scale2a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2a_0" lr_mult: 0 } param { name: "scale2a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2a" name: "res2a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2a" top: "res2a_branch2b" name: "res2a_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "bn2a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2b_0" lr_mult: 0 } param { name: "bn2a_branch2b_1" lr_mult: 0 } param { name: "bn2a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "scale2a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2b_0" lr_mult: 0 } param { name: "scale2a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2b" name: "res2a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2a_branch2b" top: "res2a_branch2c" name: "res2a_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "bn2a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2a_branch2c_0" lr_mult: 0 } param { name: "bn2a_branch2c_1" lr_mult: 0 } param { name: "bn2a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2a_branch2c" top: "res2a_branch2c" name: "scale2a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2a_branch2c_0" lr_mult: 0 } param { name: "scale2a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a_branch1" bottom: "res2a_branch2c" top: "res2a" name: "res2a" type: "Eltwise" } + +layer { bottom: "res2a" top: "res2a" name: "res2a_relu" type: "ReLU" } + +layer { bottom: "res2a" top: "res2b_branch2a" name: "res2b_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "bn2b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2a_0" lr_mult: 0 } param { name: "bn2b_branch2a_1" lr_mult: 0 } param { name: "bn2b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "scale2b_branch2a" type: "Scale" + scale_param { bias_term: true } param { name: "scale2b_branch2a_0" lr_mult: 0 } param { name: "scale2b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2a" name: "res2b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2a" top: "res2b_branch2b" name: "res2b_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "bn2b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2b_0" lr_mult: 0 } param { name: "bn2b_branch2b_1" lr_mult: 0 } param { name: "bn2b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "scale2b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2b_0" lr_mult: 0 } param { name: "scale2b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2b" name: "res2b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2b_branch2b" top: "res2b_branch2c" name: "res2b_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "bn2b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2b_branch2c_0" lr_mult: 0 } param { name: "bn2b_branch2c_1" lr_mult: 0 } param { name: "bn2b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2b_branch2c" top: "res2b_branch2c" name: "scale2b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2b_branch2c_0" lr_mult: 0 } param { name: "scale2b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2a" bottom: "res2b_branch2c" top: "res2b" name: "res2b" type: "Eltwise" } + +layer { bottom: "res2b" top: "res2b" name: "res2b_relu" type: "ReLU" } + +layer { bottom: "res2b" top: "res2c_branch2a" name: "res2c_branch2a" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "bn2c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2a_0" lr_mult: 0 } param { name: "bn2c_branch2a_1" lr_mult: 0 } param { name: "bn2c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "scale2c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2a_0" lr_mult: 0 } param { name: "scale2c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2a" name: "res2c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2a" top: "res2c_branch2b" name: "res2c_branch2b" type: "Convolution" + convolution_param { num_output: 64 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res2c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "bn2c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2b_0" lr_mult: 0 } param { name: "bn2c_branch2b_1" lr_mult: 0 } param { name: "bn2c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "scale2c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2b_0" lr_mult: 0 } param { name: "scale2c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2b" name: "res2c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res2c_branch2b" top: "res2c_branch2c" name: "res2c_branch2c" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res2c_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "bn2c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn2c_branch2c_0" lr_mult: 0 } param { name: "bn2c_branch2c_1" lr_mult: 0 } param { name: "bn2c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res2c_branch2c" top: "res2c_branch2c" name: "scale2c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale2c_branch2c_0" lr_mult: 0 } param { name: "scale2c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res2b" bottom: "res2c_branch2c" top: "res2c" name: "res2c" type: "Eltwise" } + +layer { bottom: "res2c" top: "res2c" name: "res2c_relu" type: "ReLU" } + +###################### Convolution Block 3 ##################### +layer { bottom: "res2c" top: "res3a_branch1" name: "res3a_branch1" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "bn3a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch1_0" lr_mult: 0 } param { name: "bn3a_branch1_1" lr_mult: 0 } param { name: "bn3a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" top: "res3a_branch1" name: "scale3a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch1_0" lr_mult: 0 } param { name: "scale3a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res2c" top: "res3a_branch2a" name: "res3a_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res3a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "bn3a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2a_0" lr_mult: 0 } param { name: "bn3a_branch2a_1" lr_mult: 0 } param { name: "bn3a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "scale3a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2a_0" lr_mult: 0 } param { name: "scale3a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2a" name: "res3a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2a" top: "res3a_branch2b" name: "res3a_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "bn3a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2b_0" lr_mult: 0 } param { name: "bn3a_branch2b_1" lr_mult: 0 } param { name: "bn3a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "scale3a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2b_0" lr_mult: 0 } param { name: "scale3a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2b" name: "res3a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3a_branch2b" top: "res3a_branch2c" name: "res3a_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "bn3a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3a_branch2c_0" lr_mult: 0 } param { name: "bn3a_branch2c_1" lr_mult: 0 } param { name: "bn3a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3a_branch2c" top: "res3a_branch2c" name: "scale3a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3a_branch2c_0" lr_mult: 0 } param { name: "scale3a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a_branch1" bottom: "res3a_branch2c" top: "res3a" name: "res3a" type: "Eltwise" } + +layer { bottom: "res3a" top: "res3a" name: "res3a_relu" type: "ReLU" } + +layer { bottom: "res3a" top: "res3b1_branch2a" name: "res3b1_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "bn3b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2a_0" lr_mult: 0 } param { name: "bn3b1_branch2a_1" lr_mult: 0 } param { name: "bn3b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "scale3b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2a_0" lr_mult: 0 } param { name: "scale3b1_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2a" name: "res3b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2a" top: "res3b1_branch2b" name: "res3b1_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "bn3b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2b_0" lr_mult: 0 } param { name: "bn3b1_branch2b_1" lr_mult: 0 } param { name: "bn3b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "scale3b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2b_0" lr_mult: 0 } param { name: "scale3b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2b" name: "res3b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b1_branch2b" top: "res3b1_branch2c" name: "res3b1_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "bn3b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b1_branch2c_0" lr_mult: 0 } param { name: "bn3b1_branch2c_1" lr_mult: 0 } param { name: "bn3b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b1_branch2c" top: "res3b1_branch2c" name: "scale3b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b1_branch2c_0" lr_mult: 0 } param { name: "scale3b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3a" bottom: "res3b1_branch2c" top: "res3b1" name: "res3b1" type: "Eltwise" } + +layer { bottom: "res3b1" top: "res3b1" name: "res3b1_relu" type: "ReLU" } + +layer { bottom: "res3b1" top: "res3b2_branch2a" name: "res3b2_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "bn3b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2a_0" lr_mult: 0 } param { name: "bn3b2_branch2a_1" lr_mult: 0 } param { name: "bn3b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "scale3b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2a_0" lr_mult: 0 } param { name: "scale3b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2a" name: "res3b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2a" top: "res3b2_branch2b" name: "res3b2_branch2b" type: "Convolution" + param { name: "res3b2_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "bn3b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2b_0" lr_mult: 0 } param { name: "bn3b2_branch2b_1" lr_mult: 0 } param { name: "bn3b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "scale3b2_branch2b" type: "Scale" + scale_param { bias_term: true } param { name: "scale3b2_branch2b_0" lr_mult: 0 } param { name: "scale3b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2b" name: "res3b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b2_branch2b" top: "res3b2_branch2c" name: "res3b2_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "bn3b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b2_branch2c_0" lr_mult: 0 } param { name: "bn3b2_branch2c_1" lr_mult: 0 } param { name: "bn3b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b2_branch2c" top: "res3b2_branch2c" name: "scale3b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b2_branch2c_0" lr_mult: 0 } param { name: "scale3b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b1" bottom: "res3b2_branch2c" top: "res3b2" name: "res3b2" type: "Eltwise" } + +layer { bottom: "res3b2" top: "res3b2" name: "res3b2_relu" type: "ReLU" } + +layer { bottom: "res3b2" top: "res3b3_branch2a" name: "res3b3_branch2a" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "bn3b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2a_0" lr_mult: 0 } param { name: "bn3b3_branch2a_1" lr_mult: 0 } param { name: "bn3b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "scale3b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2a_0" lr_mult: 0 } param { name: "scale3b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2a" name: "res3b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2a" top: "res3b3_branch2b" name: "res3b3_branch2b" type: "Convolution" + convolution_param { num_output: 128 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res3b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "bn3b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2b_0" lr_mult: 0 } param { name: "bn3b3_branch2b_1" lr_mult: 0 } param { name: "bn3b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "scale3b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2b_0" lr_mult: 0 } param { name: "scale3b3_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2b" name: "res3b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res3b3_branch2b" top: "res3b3_branch2c" name: "res3b3_branch2c" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res3b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "bn3b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn3b3_branch2c_0" lr_mult: 0 } param { name: "bn3b3_branch2c_1" lr_mult: 0 } param { name: "bn3b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res3b3_branch2c" top: "res3b3_branch2c" name: "scale3b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale3b3_branch2c_0" lr_mult: 0 } param { name: "scale3b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res3b2" bottom: "res3b3_branch2c" top: "res3b3" name: "res3b3" type: "Eltwise" } + +layer { bottom: "res3b3" top: "res3b3" name: "res3b3_relu" type: "ReLU" } + +###################### Convolution Block 4 ##################### +layer { bottom: "res3b3" top: "res4a_branch1" name: "res4a_branch1" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "bn4a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch1_0" lr_mult: 0 } param { name: "bn4a_branch1_1" lr_mult: 0 } param { name: "bn4a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" top: "res4a_branch1" name: "scale4a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch1_0" lr_mult: 0 } param { name: "scale4a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res3b3" top: "res4a_branch2a" name: "res4a_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 2 bias_term: false } + param { name: "res4a_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "bn4a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2a_0" lr_mult: 0 } param { name: "bn4a_branch2a_1" lr_mult: 0 } param { name: "bn4a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "scale4a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2a_0" lr_mult: 0 } param { name: "scale4a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2a" name: "res4a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2a" top: "res4a_branch2b" name: "res4a_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "bn4a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2b_0" lr_mult: 0 } param { name: "bn4a_branch2b_1" lr_mult: 0 } param { name: "bn4a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "scale4a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2b_0" lr_mult: 0 } param { name: "scale4a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2b" name: "res4a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4a_branch2b" top: "res4a_branch2c" name: "res4a_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "bn4a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4a_branch2c_0" lr_mult: 0 } param { name: "bn4a_branch2c_1" lr_mult: 0 } param { name: "bn4a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4a_branch2c" top: "res4a_branch2c" name: "scale4a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4a_branch2c_0" lr_mult: 0 } param { name: "scale4a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a_branch1" bottom: "res4a_branch2c" top: "res4a" name: "res4a" type: "Eltwise" } + +layer { bottom: "res4a" top: "res4a" name: "res4a_relu" type: "ReLU" } + +layer { bottom: "res4a" top: "res4b1_branch2a" name: "res4b1_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "bn4b1_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2a_0" lr_mult: 0 } param { name: "bn4b1_branch2a_1" lr_mult: 0 } param { name: "bn4b1_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2a" name: "scale4b1_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2a_0" lr_mult: 0 } param { name: "scale4b1_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b1_branch2a" bottom: "res4b1_branch2a" name: "res4b1_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2a" top: "res4b1_branch2b" name: "res4b1_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b1_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "bn4b1_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2b_0" lr_mult: 0 } param { name: "bn4b1_branch2b_1" lr_mult: 0 } param { name: "bn4b1_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "scale4b1_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2b_0" lr_mult: 0 } param { name: "scale4b1_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2b" name: "res4b1_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b1_branch2b" top: "res4b1_branch2c" name: "res4b1_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b1_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "bn4b1_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b1_branch2c_0" lr_mult: 0 } param { name: "bn4b1_branch2c_1" lr_mult: 0 } param { name: "bn4b1_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b1_branch2c" top: "res4b1_branch2c" name: "scale4b1_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b1_branch2c_0" lr_mult: 0 } param { name: "scale4b1_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4a" bottom: "res4b1_branch2c" top: "res4b1" name: "res4b1" type: "Eltwise" } + +layer { bottom: "res4b1" top: "res4b1" name: "res4b1_relu" type: "ReLU" } + +layer { bottom: "res4b1" top: "res4b2_branch2a" name: "res4b2_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "bn4b2_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2a_0" lr_mult: 0 } param { name: "bn4b2_branch2a_1" lr_mult: 0 } param { name: "bn4b2_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "scale4b2_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2a_0" lr_mult: 0 } param { name: "scale4b2_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2a" name: "res4b2_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2a" top: "res4b2_branch2b" name: "res4b2_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b2_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "bn4b2_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2b_0" lr_mult: 0 } param { name: "bn4b2_branch2b_1" lr_mult: 0 } param { name: "bn4b2_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "scale4b2_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2b_0" lr_mult: 0 } param { name: "scale4b2_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2b" name: "res4b2_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b2_branch2b" top: "res4b2_branch2c" name: "res4b2_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b2_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "bn4b2_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b2_branch2c_0" lr_mult: 0 } param { name: "bn4b2_branch2c_1" lr_mult: 0 } param { name: "bn4b2_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b2_branch2c" top: "res4b2_branch2c" name: "scale4b2_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b2_branch2c_0" lr_mult: 0 } param { name: "scale4b2_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b1" bottom: "res4b2_branch2c" top: "res4b2" name: "res4b2" type: "Eltwise" } + +layer { bottom: "res4b2" top: "res4b2" name: "res4b2_relu" type: "ReLU" } + +layer { bottom: "res4b2" top: "res4b3_branch2a" name: "res4b3_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "bn4b3_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2a_0" lr_mult: 0 } param { name: "bn4b3_branch2a_1" lr_mult: 0 } param { name: "bn4b3_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "scale4b3_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2a_0" lr_mult: 0 } param { name: "scale4b3_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2a" name: "res4b3_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2a" top: "res4b3_branch2b" name: "res4b3_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b3_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "bn4b3_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2b_0" lr_mult: 0 } param { name: "bn4b3_branch2b_1" lr_mult: 0 } param { name: "bn4b3_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2b" name: "scale4b3_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2b_0" lr_mult: 0 } param { name: "scale4b3_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b3_branch2b" bottom: "res4b3_branch2b" name: "res4b3_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b3_branch2b" top: "res4b3_branch2c" name: "res4b3_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b3_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "bn4b3_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b3_branch2c_0" lr_mult: 0 } param { name: "bn4b3_branch2c_1" lr_mult: 0 } param { name: "bn4b3_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b3_branch2c" top: "res4b3_branch2c" name: "scale4b3_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b3_branch2c_0" lr_mult: 0 } param { name: "scale4b3_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b2" bottom: "res4b3_branch2c" top: "res4b3" name: "res4b3" type: "Eltwise"} + +layer { bottom: "res4b3" top: "res4b3" name: "res4b3_relu" type: "ReLU" } + +layer { bottom: "res4b3" top: "res4b4_branch2a" name: "res4b4_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "bn4b4_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2a_0" lr_mult: 0 } param { name: "bn4b4_branch2a_1" lr_mult: 0 } param { name: "bn4b4_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "scale4b4_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2a_0" lr_mult: 0 } param { name: "scale4b4_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2a" name: "res4b4_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2a" top: "res4b4_branch2b" name: "res4b4_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b4_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "bn4b4_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2b_0" lr_mult: 0 } param { name: "bn4b4_branch2b_1" lr_mult: 0 } param { name: "bn4b4_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "scale4b4_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2b_0" lr_mult: 0 } param { name: "scale4b4_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2b" name: "res4b4_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b4_branch2b" top: "res4b4_branch2c" name: "res4b4_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b4_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "bn4b4_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b4_branch2c_0" lr_mult: 0 } param { name: "bn4b4_branch2c_1" lr_mult: 0 } param { name: "bn4b4_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b4_branch2c" top: "res4b4_branch2c" name: "scale4b4_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b4_branch2c_0" lr_mult: 0 } param { name: "scale4b4_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b3" bottom: "res4b4_branch2c" top: "res4b4" name: "res4b4" type: "Eltwise" } + +layer { bottom: "res4b4" top: "res4b4" name: "res4b4_relu" type: "ReLU" } + +layer { bottom: "res4b4" top: "res4b5_branch2a" name: "res4b5_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "bn4b5_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2a_0" lr_mult: 0 } param { name: "bn4b5_branch2a_1" lr_mult: 0 } param { name: "bn4b5_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2a" name: "scale4b5_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2a_0" lr_mult: 0 } param { name: "scale4b5_branch2a_1" lr_mult: 0 } } + +layer { top: "res4b5_branch2a" bottom: "res4b5_branch2a" name: "res4b5_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2a" top: "res4b5_branch2b" name: "res4b5_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b5_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "bn4b5_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2b_0" lr_mult: 0 } param { name: "bn4b5_branch2b_1" lr_mult: 0 } param { name: "bn4b5_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "scale4b5_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2b_0" lr_mult: 0 } param { name: "scale4b5_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2b" name: "res4b5_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b5_branch2b" top: "res4b5_branch2c" name: "res4b5_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b5_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "bn4b5_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b5_branch2c_0" lr_mult: 0 } param { name: "bn4b5_branch2c_1" lr_mult: 0 } param { name: "bn4b5_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b5_branch2c" top: "res4b5_branch2c" name: "scale4b5_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b5_branch2c_0" lr_mult: 0 } param { name: "scale4b5_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b4" bottom: "res4b5_branch2c" top: "res4b5" name: "res4b5" type: "Eltwise" } + +layer { bottom: "res4b5" top: "res4b5" name: "res4b5_relu" type: "ReLU" } + +layer { bottom: "res4b5" top: "res4b6_branch2a" name: "res4b6_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "bn4b6_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2a_0" lr_mult: 0 } param { name: "bn4b6_branch2a_1" lr_mult: 0 } param { name: "bn4b6_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "scale4b6_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2a_0" lr_mult: 0 } param { name: "scale4b6_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2a" name: "res4b6_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2a" top: "res4b6_branch2b" name: "res4b6_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b6_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "bn4b6_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2b_0" lr_mult: 0 } param { name: "bn4b6_branch2b_1" lr_mult: 0 } param { name: "bn4b6_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "scale4b6_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2b_0" lr_mult: 0 } param { name: "scale4b6_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2b" name: "res4b6_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b6_branch2b" top: "res4b6_branch2c" name: "res4b6_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b6_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "bn4b6_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b6_branch2c_0" lr_mult: 0 } param { name: "bn4b6_branch2c_1" lr_mult: 0 } param { name: "bn4b6_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b6_branch2c" top: "res4b6_branch2c" name: "scale4b6_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b6_branch2c_0" lr_mult: 0 } param { name: "scale4b6_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b5" bottom: "res4b6_branch2c" top: "res4b6" name: "res4b6" type: "Eltwise" } + +layer { bottom: "res4b6" top: "res4b6" name: "res4b6_relu" type: "ReLU" } + +layer { bottom: "res4b6" top: "res4b7_branch2a" name: "res4b7_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "bn4b7_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2a_0" lr_mult: 0 } param { name: "bn4b7_branch2a_1" lr_mult: 0 } param { name: "bn4b7_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "scale4b7_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2a_0" lr_mult: 0 } param { name: "scale4b7_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2a" name: "res4b7_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2a" top: "res4b7_branch2b" name: "res4b7_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b7_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "bn4b7_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2b_0" lr_mult: 0 } param { name: "bn4b7_branch2b_1" lr_mult: 0 } param { name: "bn4b7_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "scale4b7_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2b_0" lr_mult: 0 } param { name: "scale4b7_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2b" name: "res4b7_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b7_branch2b" top: "res4b7_branch2c" name: "res4b7_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b7_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "bn4b7_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b7_branch2c_0" lr_mult: 0 } param { name: "bn4b7_branch2c_1" lr_mult: 0 } param { name: "bn4b7_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b7_branch2c" top: "res4b7_branch2c" name: "scale4b7_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b7_branch2c_0" lr_mult: 0 } param { name: "scale4b7_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b6" bottom: "res4b7_branch2c" top: "res4b7" name: "res4b7" type: "Eltwise" } + +layer { bottom: "res4b7" top: "res4b7" name: "res4b7_relu" type: "ReLU" } + +layer { bottom: "res4b7" top: "res4b8_branch2a" name: "res4b8_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "bn4b8_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2a_0" lr_mult: 0 } param { name: "bn4b8_branch2a_1" lr_mult: 0 } param { name: "bn4b8_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "scale4b8_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2a_0" lr_mult: 0 } param { name: "scale4b8_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2a" name: "res4b8_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2a" top: "res4b8_branch2b" name: "res4b8_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b8_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "bn4b8_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2b_0" lr_mult: 0 } param { name: "bn4b8_branch2b_1" lr_mult: 0 } param { name: "bn4b8_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "scale4b8_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2b_0" lr_mult: 0 } param { name: "scale4b8_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2b" name: "res4b8_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b8_branch2b" top: "res4b8_branch2c" name: "res4b8_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b8_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "bn4b8_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b8_branch2c_0" lr_mult: 0 } param { name: "bn4b8_branch2c_1" lr_mult: 0 } param { name: "bn4b8_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b8_branch2c" top: "res4b8_branch2c" name: "scale4b8_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b8_branch2c_0" lr_mult: 0 } param { name: "scale4b8_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b7" bottom: "res4b8_branch2c" top: "res4b8" name: "res4b8" type: "Eltwise" } + +layer { bottom: "res4b8" top: "res4b8" name: "res4b8_relu" type: "ReLU" } + +layer { bottom: "res4b8" top: "res4b9_branch2a" name: "res4b9_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "bn4b9_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2a_0" lr_mult: 0 } param { name: "bn4b9_branch2a_1" lr_mult: 0 } param { name: "bn4b9_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "scale4b9_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2a_0" lr_mult: 0 } param { name: "scale4b9_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2a" name: "res4b9_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2a" top: "res4b9_branch2b" name: "res4b9_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b9_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "bn4b9_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2b_0" lr_mult: 0 } param { name: "bn4b9_branch2b_1" lr_mult: 0 } param { name: "bn4b9_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "scale4b9_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2b_0" lr_mult: 0 } param { name: "scale4b9_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2b" name: "res4b9_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b9_branch2b" top: "res4b9_branch2c" name: "res4b9_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b9_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "bn4b9_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b9_branch2c_0" lr_mult: 0 } param { name: "bn4b9_branch2c_1" lr_mult: 0 } param { name: "bn4b9_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b9_branch2c" top: "res4b9_branch2c" name: "scale4b9_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b9_branch2c_0" lr_mult: 0 } param { name: "scale4b9_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b8" bottom: "res4b9_branch2c" top: "res4b9" name: "res4b9" type: "Eltwise" } + +layer { bottom: "res4b9" top: "res4b9" name: "res4b9_relu" type: "ReLU" } + +layer { bottom: "res4b9" top: "res4b10_branch2a" name: "res4b10_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "bn4b10_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2a_0" lr_mult: 0 } param { name: "bn4b10_branch2a_1" lr_mult: 0 } param { name: "bn4b10_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "scale4b10_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2a_0" lr_mult: 0 } param { name: "scale4b10_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2a" name: "res4b10_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2a" top: "res4b10_branch2b" name: "res4b10_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b10_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "bn4b10_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2b_0" lr_mult: 0 } param { name: "bn4b10_branch2b_1" lr_mult: 0 } param { name: "bn4b10_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "scale4b10_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2b_0" lr_mult: 0 } param { name: "scale4b10_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2b" name: "res4b10_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b10_branch2b" top: "res4b10_branch2c" name: "res4b10_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b10_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "bn4b10_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b10_branch2c_0" lr_mult: 0 } param { name: "bn4b10_branch2c_1" lr_mult: 0 } param { name: "bn4b10_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b10_branch2c" top: "res4b10_branch2c" name: "scale4b10_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b10_branch2c_0" lr_mult: 0 } param { name: "scale4b10_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b9" bottom: "res4b10_branch2c" top: "res4b10" name: "res4b10" type: "Eltwise" } + +layer { bottom: "res4b10" top: "res4b10" name: "res4b10_relu" type: "ReLU" } + +layer { bottom: "res4b10" top: "res4b11_branch2a" name: "res4b11_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b11_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "bn4b11_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2a_0" lr_mult: 0 } param { name: "bn4b11_branch2a_1" lr_mult: 0 } param { name: "bn4b11_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "scale4b11_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2a_0" lr_mult: 0 } param { name: "scale4b11_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2a" name: "res4b11_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2a" top: "res4b11_branch2b" name: "res4b11_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b11_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "bn4b11_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2b_0" lr_mult: 0 } param { name: "bn4b11_branch2b_1" lr_mult: 0 } param { name: "bn4b11_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "scale4b11_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2b_0" lr_mult: 0 } param { name: "scale4b11_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2b" name: "res4b11_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b11_branch2b" top: "res4b11_branch2c" name: "res4b11_branch2c" type: "Convolution" + param { name: "res4b11_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "bn4b11_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b11_branch2c_0" lr_mult: 0 } param { name: "bn4b11_branch2c_1" lr_mult: 0 } param { name: "bn4b11_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b11_branch2c" top: "res4b11_branch2c" name: "scale4b11_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b11_branch2c_0" lr_mult: 0 } param { name: "scale4b11_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b10" bottom: "res4b11_branch2c" top: "res4b11" name: "res4b11" type: "Eltwise" } + +layer { bottom: "res4b11" top: "res4b11" name: "res4b11_relu" type: "ReLU" } + +layer { bottom: "res4b11" top: "res4b12_branch2a" name: "res4b12_branch2a" type: "Convolution" + param { name: "res4b12_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "bn4b12_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2a_0" lr_mult: 0 } param { name: "bn4b12_branch2a_1" lr_mult: 0 } param { name: "bn4b12_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "scale4b12_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2a_0" lr_mult: 0 } param { name: "scale4b12_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2a" name: "res4b12_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2a" top: "res4b12_branch2b" name: "res4b12_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b12_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "bn4b12_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2b_0" lr_mult: 0 } param { name: "bn4b12_branch2b_1" lr_mult: 0 } param { name: "bn4b12_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "scale4b12_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2b_0" lr_mult: 0 } param { name: "scale4b12_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2b" name: "res4b12_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b12_branch2b" top: "res4b12_branch2c" name: "res4b12_branch2c" type: "Convolution" + param { name: "res4b12_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "bn4b12_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b12_branch2c_0" lr_mult: 0 } param { name: "bn4b12_branch2c_1" lr_mult: 0 } param { name: "bn4b12_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b12_branch2c" top: "res4b12_branch2c" name: "scale4b12_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b12_branch2c_0" lr_mult: 0 } param { name: "scale4b12_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b11" bottom: "res4b12_branch2c" top: "res4b12" name: "res4b12" type: "Eltwise" } + +layer { bottom: "res4b12" top: "res4b12" name: "res4b12_relu" type: "ReLU" } + +layer { bottom: "res4b12" top: "res4b13_branch2a" name: "res4b13_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "bn4b13_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2a_0" lr_mult: 0 } param { name: "bn4b13_branch2a_1" lr_mult: 0 } param { name: "bn4b13_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "scale4b13_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2a_0" lr_mult: 0 } param { name: "scale4b13_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2a" name: "res4b13_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2a" top: "res4b13_branch2b" name: "res4b13_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b13_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "bn4b13_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2b_0" lr_mult: 0 } param { name: "bn4b13_branch2b_1" lr_mult: 0 } param { name: "bn4b13_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "scale4b13_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2b_0" lr_mult: 0 } param { name: "scale4b13_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2b" name: "res4b13_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b13_branch2b" top: "res4b13_branch2c" name: "res4b13_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b13_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "bn4b13_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b13_branch2c_0" lr_mult: 0 } param { name: "bn4b13_branch2c_1" lr_mult: 0 } param { name: "bn4b13_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b13_branch2c" top: "res4b13_branch2c" name: "scale4b13_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b13_branch2c_0" lr_mult: 0 } param { name: "scale4b13_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b12" bottom: "res4b13_branch2c" top: "res4b13" name: "res4b13" type: "Eltwise" } + +layer { bottom: "res4b13" top: "res4b13" name: "res4b13_relu" type: "ReLU" } + +layer { bottom: "res4b13" top: "res4b14_branch2a" name: "res4b14_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b14_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "bn4b14_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2a_0" lr_mult: 0 } param { name: "bn4b14_branch2a_1" lr_mult: 0 } param { name: "bn4b14_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "scale4b14_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2a_0" lr_mult: 0 } param { name: "scale4b14_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2a" name: "res4b14_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2a" top: "res4b14_branch2b" name: "res4b14_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b14_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "bn4b14_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2b_0" lr_mult: 0 } param { name: "bn4b14_branch2b_1" lr_mult: 0 } param { name: "bn4b14_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "scale4b14_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2b_0" lr_mult: 0 } param { name: "scale4b14_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2b" name: "res4b14_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b14_branch2b" top: "res4b14_branch2c" name: "res4b14_branch2c" type: "Convolution" + param { name: "res4b14_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "bn4b14_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b14_branch2c_0" lr_mult: 0 } param { name: "bn4b14_branch2c_1" lr_mult: 0 } param { name: "bn4b14_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b14_branch2c" top: "res4b14_branch2c" name: "scale4b14_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b14_branch2c_0" lr_mult: 0 } param { name: "scale4b14_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b13" bottom: "res4b14_branch2c" top: "res4b14" name: "res4b14" type: "Eltwise" } + +layer { bottom: "res4b14" top: "res4b14" name: "res4b14_relu" type: "ReLU" } + +layer { bottom: "res4b14" top: "res4b15_branch2a" name: "res4b15_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "bn4b15_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2a_0" lr_mult: 0 } param { name: "bn4b15_branch2a_1" lr_mult: 0 } param { name: "bn4b15_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "scale4b15_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2a_0" lr_mult: 0 } param { name: "scale4b15_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2a" name: "res4b15_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2a" top: "res4b15_branch2b" name: "res4b15_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b15_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "bn4b15_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2b_0" lr_mult: 0 } param { name: "bn4b15_branch2b_1" lr_mult: 0 } param { name: "bn4b15_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2b" name: "scale4b15_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2b_0" lr_mult: 0 } param { name: "scale4b15_branch2b_1" lr_mult: 0 } } + +layer { top: "res4b15_branch2b" bottom: "res4b15_branch2b" name: "res4b15_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b15_branch2b" top: "res4b15_branch2c" name: "res4b15_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b15_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "bn4b15_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b15_branch2c_0" lr_mult: 0 } param { name: "bn4b15_branch2c_1" lr_mult: 0 } param { name: "bn4b15_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b15_branch2c" top: "res4b15_branch2c" name: "scale4b15_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b15_branch2c_0" lr_mult: 0 } param { name: "scale4b15_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b14" bottom: "res4b15_branch2c" top: "res4b15" name: "res4b15" type: "Eltwise" } + +layer { bottom: "res4b15" top: "res4b15" name: "res4b15_relu" type: "ReLU" } + +layer { bottom: "res4b15" top: "res4b16_branch2a" name: "res4b16_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "bn4b16_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2a_0" lr_mult: 0 } param { name: "bn4b16_branch2a_1" lr_mult: 0 } param { name: "bn4b16_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "scale4b16_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2a_0" lr_mult: 0 } param { name: "scale4b16_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2a" name: "res4b16_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2a" top: "res4b16_branch2b" name: "res4b16_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b16_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "bn4b16_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2b_0" lr_mult: 0 } param { name: "bn4b16_branch2b_1" lr_mult: 0 } param { name: "bn4b16_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "scale4b16_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2b_0" lr_mult: 0 } param { name: "scale4b16_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2b" name: "res4b16_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b16_branch2b" top: "res4b16_branch2c" name: "res4b16_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b16_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "bn4b16_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b16_branch2c_0" lr_mult: 0 } param { name: "bn4b16_branch2c_1" lr_mult: 0 } param { name: "bn4b16_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b16_branch2c" top: "res4b16_branch2c" name: "scale4b16_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b16_branch2c_0" lr_mult: 0 } param { name: "scale4b16_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b15" bottom: "res4b16_branch2c" top: "res4b16" name: "res4b16" type: "Eltwise" } + +layer { bottom: "res4b16" top: "res4b16" name: "res4b16_relu" type: "ReLU" } + +layer { bottom: "res4b16" top: "res4b17_branch2a" name: "res4b17_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "bn4b17_branch2a" type: "BatchNorm" + param { name: "bn4b17_branch2a_0" lr_mult: 0 } param { name: "bn4b17_branch2a_1" lr_mult: 0 } param { name: "bn4b17_branch2a_2" lr_mult: 0 } + batch_norm_param { use_global_stats: true } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "scale4b17_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2a_0" lr_mult: 0 } param { name: "scale4b17_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2a" name: "res4b17_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2a" top: "res4b17_branch2b" name: "res4b17_branch2b" type: "Convolution" + param { name: "res4b17_branch2b_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "bn4b17_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2b_0" lr_mult: 0 } param { name: "bn4b17_branch2b_1" lr_mult: 0 } param { name: "bn4b17_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "scale4b17_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2b_0" lr_mult: 0 } param { name: "scale4b17_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2b" name: "res4b17_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b17_branch2b" top: "res4b17_branch2c" name: "res4b17_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b17_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "bn4b17_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b17_branch2c_0" lr_mult: 0 } param { name: "bn4b17_branch2c_1" lr_mult: 0 } param { name: "bn4b17_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b17_branch2c" top: "res4b17_branch2c" name: "scale4b17_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b17_branch2c_0" lr_mult: 0 } param { name: "scale4b17_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b16" bottom: "res4b17_branch2c" top: "res4b17" name: "res4b17" type: "Eltwise" } + +layer { bottom: "res4b17" top: "res4b17" name: "res4b17_relu" type: "ReLU" } + +layer { bottom: "res4b17" top: "res4b18_branch2a" name: "res4b18_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "bn4b18_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2a_0" lr_mult: 0 } param { name: "bn4b18_branch2a_1" lr_mult: 0 } param { name: "bn4b18_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "scale4b18_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2a_0" lr_mult: 0 } param { name: "scale4b18_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2a" name: "res4b18_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2a" top: "res4b18_branch2b" name: "res4b18_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b18_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "bn4b18_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2b_0" lr_mult: 0 } param { name: "bn4b18_branch2b_1" lr_mult: 0 } param { name: "bn4b18_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "scale4b18_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2b_0" lr_mult: 0 } param { name: "scale4b18_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2b" name: "res4b18_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b18_branch2b" top: "res4b18_branch2c" name: "res4b18_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b18_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "bn4b18_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b18_branch2c_0" lr_mult: 0 } param { name: "bn4b18_branch2c_1" lr_mult: 0 } param { name: "bn4b18_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b18_branch2c" top: "res4b18_branch2c" name: "scale4b18_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b18_branch2c_0" lr_mult: 0 } param { name: "scale4b18_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b17" bottom: "res4b18_branch2c" top: "res4b18" name: "res4b18" type: "Eltwise" } + +layer { bottom: "res4b18" top: "res4b18" name: "res4b18_relu" type: "ReLU" } + +layer { bottom: "res4b18" top: "res4b19_branch2a" name: "res4b19_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "bn4b19_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2a_0" lr_mult: 0 } param { name: "bn4b19_branch2a_1" lr_mult: 0 } param { name: "bn4b19_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "scale4b19_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2a_0" lr_mult: 0 } param { name: "scale4b19_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2a" name: "res4b19_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2a" top: "res4b19_branch2b" name: "res4b19_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b19_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "bn4b19_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2b_0" lr_mult: 0 } param { name: "bn4b19_branch2b_1" lr_mult: 0 } param { name: "bn4b19_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "scale4b19_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2b_0" lr_mult: 0 } param { name: "scale4b19_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2b" name: "res4b19_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b19_branch2b" top: "res4b19_branch2c" name: "res4b19_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b19_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "bn4b19_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b19_branch2c_0" lr_mult: 0 } param { name: "bn4b19_branch2c_1" lr_mult: 0 } param { name: "bn4b19_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b19_branch2c" top: "res4b19_branch2c" name: "scale4b19_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b19_branch2c_0" lr_mult: 0 } param { name: "scale4b19_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b18" bottom: "res4b19_branch2c" top: "res4b19" name: "res4b19" type: "Eltwise" } + +layer { bottom: "res4b19" top: "res4b19" name: "res4b19_relu" type: "ReLU" } + +layer { bottom: "res4b19" top: "res4b20_branch2a" name: "res4b20_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "bn4b20_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2a_0" lr_mult: 0 } param { name: "bn4b20_branch2a_1" lr_mult: 0 } param { name: "bn4b20_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "scale4b20_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2a_0" lr_mult: 0 } param { name: "scale4b20_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2a" name: "res4b20_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2a" top: "res4b20_branch2b" name: "res4b20_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b20_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "bn4b20_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2b_0" lr_mult: 0 } param { name: "bn4b20_branch2b_1" lr_mult: 0 } param { name: "bn4b20_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "scale4b20_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2b_0" lr_mult: 0 } param { name: "scale4b20_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2b" name: "res4b20_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b20_branch2b" top: "res4b20_branch2c" name: "res4b20_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b20_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "bn4b20_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b20_branch2c_0" lr_mult: 0 } param { name: "bn4b20_branch2c_1" lr_mult: 0 } param { name: "bn4b20_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b20_branch2c" top: "res4b20_branch2c" name: "scale4b20_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b20_branch2c_0" lr_mult: 0 } param { name: "scale4b20_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b19" bottom: "res4b20_branch2c" top: "res4b20" name: "res4b20" type: "Eltwise" } + +layer { bottom: "res4b20" top: "res4b20" name: "res4b20_relu" type: "ReLU" } + +layer { bottom: "res4b20" top: "res4b21_branch2a" name: "res4b21_branch2a" type: "Convolution" + param { name: "res4b21_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "bn4b21_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2a_0" lr_mult: 0 } param { name: "bn4b21_branch2a_1" lr_mult: 0 } param { name: "bn4b21_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "scale4b21_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2a_0" lr_mult: 0 } param { name: "scale4b21_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2a" name: "res4b21_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2a" top: "res4b21_branch2b" name: "res4b21_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b21_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "bn4b21_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2b_0" lr_mult: 0 } param { name: "bn4b21_branch2b_1" lr_mult: 0 } param { name: "bn4b21_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "scale4b21_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2b_0" lr_mult: 0 } param { name: "scale4b21_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2b" name: "res4b21_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b21_branch2b" top: "res4b21_branch2c" name: "res4b21_branch2c" type: "Convolution" + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b21_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "bn4b21_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b21_branch2c_0" lr_mult: 0 } param { name: "bn4b21_branch2c_1" lr_mult: 0 } param { name: "bn4b21_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b21_branch2c" top: "res4b21_branch2c" name: "scale4b21_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b21_branch2c_0" lr_mult: 0 } param { name: "scale4b21_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b20" bottom: "res4b21_branch2c" top: "res4b21" name: "res4b21" type: "Eltwise" } + +layer { bottom: "res4b21" top: "res4b21" name: "res4b21_relu" type: "ReLU" } + +layer { bottom: "res4b21" top: "res4b22_branch2a" name: "res4b22_branch2a" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res4b22_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "bn4b22_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2a_0" lr_mult: 0 } param { name: "bn4b22_branch2a_1" lr_mult: 0 } param { name: "bn4b22_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "scale4b22_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2a_0" lr_mult: 0 } param { name: "scale4b22_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2a" name: "res4b22_branch2a_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2a" top: "res4b22_branch2b" name: "res4b22_branch2b" type: "Convolution" + convolution_param { num_output: 256 kernel_size: 3 pad: 2 dilation: 2 stride: 1 bias_term: false } + param { name: "res4b22_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "bn4b22_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2b_0" lr_mult: 0 } param { name: "bn4b22_branch2b_1" lr_mult: 0 } param { name: "bn4b22_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "scale4b22_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2b_0" lr_mult: 0 } param { name: "scale4b22_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2b" name: "res4b22_branch2b_relu" type: "ReLU" } + +layer { bottom: "res4b22_branch2b" top: "res4b22_branch2c" name: "res4b22_branch2c" type: "Convolution" + param { name: "res4b22_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 1024 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "bn4b22_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn4b22_branch2c_0" lr_mult: 0 } param { name: "bn4b22_branch2c_1" lr_mult: 0 } param { name: "bn4b22_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res4b22_branch2c" top: "res4b22_branch2c" name: "scale4b22_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale4b22_branch2c_0" lr_mult: 0 } param { name: "scale4b22_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res4b21" bottom: "res4b22_branch2c" top: "res4b22" name: "res4b22" type: "Eltwise" } + +layer { bottom: "res4b22" top: "res4b22" name: "res4b22_relu" type: "ReLU" } + +###################### Convolution Block 5 ##################### + +layer { bottom: "res4b22" top: "res5a_branch1" name: "res5a_branch1" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch1_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "bn5a_branch1" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch1_0" lr_mult: 0 } param { name: "bn5a_branch1_1" lr_mult: 0 } param { name: "bn5a_branch1_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" top: "res5a_branch1" name: "scale5a_branch1" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch1_0" lr_mult: 0 } param { name: "scale5a_branch1_1" lr_mult: 0 } } + +layer { bottom: "res4b22" top: "res5a_branch2a" name: "res5a_branch2a" type: "Convolution" + param { name: "res5a_branch2a_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "bn5a_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2a_0" lr_mult: 0 } param { name: "bn5a_branch2a_1" lr_mult: 0 } param { name: "bn5a_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "scale5a_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2a_0" lr_mult: 0 } param { name: "scale5a_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2a" name: "res5a_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2a" top: "res5a_branch2b" name: "res5a_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5a_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "bn5a_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2b_0" lr_mult: 0 } param { name: "bn5a_branch2b_1" lr_mult: 0 } param { name: "bn5a_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "scale5a_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2b_0" lr_mult: 0 } param { name: "scale5a_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2b" name: "res5a_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5a_branch2b" top: "res5a_branch2c" name: "res5a_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5a_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "bn5a_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5a_branch2c_0" lr_mult: 0 } param { name: "bn5a_branch2c_1" lr_mult: 0 } param { name: "bn5a_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5a_branch2c" top: "res5a_branch2c" name: "scale5a_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5a_branch2c_0" lr_mult: 0 } param { name: "scale5a_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a_branch1" bottom: "res5a_branch2c" top: "res5a" name: "res5a" type: "Eltwise" } + +layer { bottom: "res5a" top: "res5a" name: "res5a_relu" type: "ReLU" } + +layer { bottom: "res5a" top: "res5b_branch2a" name: "res5b_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "bn5b_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2a_0" lr_mult: 0 } param { name: "bn5b_branch2a_1" lr_mult: 0 } param { name: "bn5b_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "scale5b_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2a_0" lr_mult: 0 } param { name: "scale5b_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2a" name: "res5b_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2a" top: "res5b_branch2b" name: "res5b_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5b_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "bn5b_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2b_0" lr_mult: 0 } param { name: "bn5b_branch2b_1" lr_mult: 0 } param { name: "bn5b_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "scale5b_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2b_0" lr_mult: 0 } param { name: "scale5b_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2b" name: "res5b_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5b_branch2b" top: "res5b_branch2c" name: "res5b_branch2c" type: "Convolution" + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5b_branch2c_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "bn5b_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5b_branch2c_0" lr_mult: 0 } param { name: "bn5b_branch2c_1" lr_mult: 0 } param { name: "bn5b_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5b_branch2c" top: "res5b_branch2c" name: "scale5b_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5b_branch2c_0" lr_mult: 0 } param { name: "scale5b_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5a" bottom: "res5b_branch2c" top: "res5b" name: "res5b" type: "Eltwise" } + +layer { bottom: "res5b" top: "res5b" name: "res5b_relu" type: "ReLU" } + +layer { bottom: "res5b" top: "res5c_branch2a" name: "res5c_branch2a" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 1 pad: 0 stride: 1 bias_term: false } + param { name: "res5c_branch2a_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "bn5c_branch2a" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2a_0" lr_mult: 0 } param { name: "bn5c_branch2a_1" lr_mult: 0 } param { name: "bn5c_branch2a_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "scale5c_branch2a" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2a_0" lr_mult: 0 } param { name: "scale5c_branch2a_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2a" name: "res5c_branch2a_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2a" top: "res5c_branch2b" name: "res5c_branch2b" type: "Convolution" + convolution_param { num_output: 512 kernel_size: 3 pad: 4 dilation: 4 stride: 1 bias_term: false } + param { name: "res5c_branch2b_0" lr_mult: 1 decay_mult: 1 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "bn5c_branch2b" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2b_0" lr_mult: 0 } param { name: "bn5c_branch2b_1" lr_mult: 0 } param { name: "bn5c_branch2b_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "scale5c_branch2b" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2b_0" lr_mult: 0 } param { name: "scale5c_branch2b_1" lr_mult: 0 } } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2b" name: "res5c_branch2b_relu" type: "ReLU" } + +layer { bottom: "res5c_branch2b" top: "res5c_branch2c" name: "res5c_branch2c" type: "Convolution" + param { name: "res5c_branch2c_0" lr_mult: 1 decay_mult: 1 } + convolution_param { num_output: 2048 kernel_size: 1 pad: 0 stride: 1 bias_term: false } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "bn5c_branch2c" type: "BatchNorm" + batch_norm_param { use_global_stats: true } + param { name: "bn5c_branch2c_0" lr_mult: 0 } param { name: "bn5c_branch2c_1" lr_mult: 0 } param { name: "bn5c_branch2c_2" lr_mult: 0 } } + +layer { bottom: "res5c_branch2c" top: "res5c_branch2c" name: "scale5c_branch2c" type: "Scale" + scale_param { bias_term: true } + param { name: "scale5c_branch2c_0" lr_mult: 0 } param { name: "scale5c_branch2c_1" lr_mult: 0 } } + +layer { bottom: "res5b" bottom: "res5c_branch2c" top: "res5c" name: "res5c" type: "Eltwise" } + +layer { bottom: "res5c" top: "res5c" name: "res5c_relu" type: "ReLU" } + +################## DSN conv 1 #################### +layer { bottom: "conv1" top: "score_side1" name: "score_side1" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s1" bottom: "score_side1" bottom: "label" top:"side1_loss" loss_weight: 1} + +################## DSN conv 2 #################### +layer { bottom: "res2c" top: "score_side2" name: "score_side2" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side2" top: "score_side2_up" type: "Deconvolution" name: "upsample_side2" + convolution_param { kernel_size: 4 stride: 2 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side2_up" bottom: "data" top: "score_side2_crop" type: "Crop" name: "crop_side2" + crop_param { axis: 2 offset: 1 offset: 1 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s2" bottom: "score_side2_crop" bottom: "label" top:"side2_loss" loss_weight: 1} + +################## DSN conv 3 #################### +layer { bottom: "res3b3" top: "score_side3" name: "score_side3" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side3" top: "score_side3_up" type: "Deconvolution" name: "upsample_side3" + convolution_param { kernel_size: 8 stride: 4 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side3_up" bottom: "data" top: "score_side3_crop" type: "Crop" name: "crop_side3" + crop_param { axis: 2 offset: 2 offset: 2 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s3" bottom: "score_side3_crop" bottom: "label" top:"side3_loss" loss_weight: 1} + +################## DSN conv 4 #################### +layer { bottom: "res4b22" top: "score_side4" name: "score_side4" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side4" top: "score_side4_up" type: "Deconvolution" name: "upsample_side4" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side4_up" bottom: "data" top: "score_side4_crop" type: "Crop" name: "crop_side4" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s4" bottom: "score_side4_crop" bottom: "label" top:"side4_loss" loss_weight: 1} + +################## DSN conv 5 #################### +layer { bottom: "res5c" top: "score_side5" name: "score_side5" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } + +layer { bottom: "score_side5" top: "score_side5_up" type: "Deconvolution" name: "upsample_side5" + convolution_param { kernel_size: 16 stride: 8 num_output: 20 group: 20 weight_filler: { type: "bilinear" } bias_term: false } + param { lr_mult: 0 decay_mult: 0 } } + +layer { bottom: "score_side5_up" bottom: "data" top: "score_side5_crop" type: "Crop" name: "crop_side5" + crop_param { axis: 2 offset: 4 offset: 4 } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_s5" bottom: "score_side5_crop" bottom: "label" top:"side5_loss" loss_weight: 1} + +################## Sliced concat of side activisions #################### +layer { name: "slicer_side1" type: "Slice" bottom: "score_side1" + top: "score_s1_cls1" top: "score_s1_cls2" top: "score_s1_cls3" top: "score_s1_cls4" top: "score_s1_cls5" + top: "score_s1_cls6" top: "score_s1_cls7" top: "score_s1_cls8" top: "score_s1_cls9" top: "score_s1_cls10" + top: "score_s1_cls11" top: "score_s1_cls12" top: "score_s1_cls13" top: "score_s1_cls14" top: "score_s1_cls15" + top: "score_s1_cls16" top: "score_s1_cls17" top: "score_s1_cls18" top: "score_s1_cls19" top: "score_s1_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side2" type: "Slice" bottom: "score_side2_crop" + top: "score_s2_cls1" top: "score_s2_cls2" top: "score_s2_cls3" top: "score_s2_cls4" top: "score_s2_cls5" + top: "score_s2_cls6" top: "score_s2_cls7" top: "score_s2_cls8" top: "score_s2_cls9" top: "score_s2_cls10" + top: "score_s2_cls11" top: "score_s2_cls12" top: "score_s2_cls13" top: "score_s2_cls14" top: "score_s2_cls15" + top: "score_s2_cls16" top: "score_s2_cls17" top: "score_s2_cls18" top: "score_s2_cls19" top: "score_s2_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side3" type: "Slice" bottom: "score_side3_crop" + top: "score_s3_cls1" top: "score_s3_cls2" top: "score_s3_cls3" top: "score_s3_cls4" top: "score_s3_cls5" + top: "score_s3_cls6" top: "score_s3_cls7" top: "score_s3_cls8" top: "score_s3_cls9" top: "score_s3_cls10" + top: "score_s3_cls11" top: "score_s3_cls12" top: "score_s3_cls13" top: "score_s3_cls14" top: "score_s3_cls15" + top: "score_s3_cls16" top: "score_s3_cls17" top: "score_s3_cls18" top: "score_s3_cls19" top: "score_s3_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side4" type: "Slice" bottom: "score_side4_crop" + top: "score_s4_cls1" top: "score_s4_cls2" top: "score_s4_cls3" top: "score_s4_cls4" top: "score_s4_cls5" + top: "score_s4_cls6" top: "score_s4_cls7" top: "score_s4_cls8" top: "score_s4_cls9" top: "score_s4_cls10" + top: "score_s4_cls11" top: "score_s4_cls12" top: "score_s4_cls13" top: "score_s4_cls14" top: "score_s4_cls15" + top: "score_s4_cls16" top: "score_s4_cls17" top: "score_s4_cls18" top: "score_s4_cls19" top: "score_s4_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "slicer_side5" type: "Slice" bottom: "score_side5_crop" + top: "score_s5_cls1" top: "score_s5_cls2" top: "score_s5_cls3" top: "score_s5_cls4" top: "score_s5_cls5" + top: "score_s5_cls6" top: "score_s5_cls7" top: "score_s5_cls8" top: "score_s5_cls9" top: "score_s5_cls10" + top: "score_s5_cls11" top: "score_s5_cls12" top: "score_s5_cls13" top: "score_s5_cls14" top: "score_s5_cls15" + top: "score_s5_cls16" top: "score_s5_cls17" top: "score_s5_cls18" top: "score_s5_cls19" top: "score_s5_cls20" + slice_param { axis: 1 + slice_point: 1 slice_point: 2 slice_point: 3 slice_point: 4 slice_point: 5 slice_point: 6 slice_point: 7 + slice_point: 8 slice_point: 9 slice_point: 10 slice_point: 11 slice_point: 12 slice_point: 13 slice_point: 14 + slice_point: 15 slice_point: 16 slice_point: 17 slice_point: 18 slice_point: 19 } } + +layer { name: "concat_clsall" type: "Concat" top: "score_concat_clsall" + bottom: "score_s1_cls1" bottom: "score_s2_cls1" bottom: "score_s3_cls1" bottom: "score_s4_cls1" bottom: "score_s5_cls1" + bottom: "score_s1_cls2" bottom: "score_s2_cls2" bottom: "score_s3_cls2" bottom: "score_s4_cls2" bottom: "score_s5_cls2" + bottom: "score_s1_cls3" bottom: "score_s2_cls3" bottom: "score_s3_cls3" bottom: "score_s4_cls3" bottom: "score_s5_cls3" + bottom: "score_s1_cls4" bottom: "score_s2_cls4" bottom: "score_s3_cls4" bottom: "score_s4_cls4" bottom: "score_s5_cls4" + bottom: "score_s1_cls5" bottom: "score_s2_cls5" bottom: "score_s3_cls5" bottom: "score_s4_cls5" bottom: "score_s5_cls5" + bottom: "score_s1_cls6" bottom: "score_s2_cls6" bottom: "score_s3_cls6" bottom: "score_s4_cls6" bottom: "score_s5_cls6" + bottom: "score_s1_cls7" bottom: "score_s2_cls7" bottom: "score_s3_cls7" bottom: "score_s4_cls7" bottom: "score_s5_cls7" + bottom: "score_s1_cls8" bottom: "score_s2_cls8" bottom: "score_s3_cls8" bottom: "score_s4_cls8" bottom: "score_s5_cls8" + bottom: "score_s1_cls9" bottom: "score_s2_cls9" bottom: "score_s3_cls9" bottom: "score_s4_cls9" bottom: "score_s5_cls9" + bottom: "score_s1_cls10" bottom: "score_s2_cls10" bottom: "score_s3_cls10" bottom: "score_s4_cls10" bottom: "score_s5_cls10" + bottom: "score_s1_cls11" bottom: "score_s2_cls11" bottom: "score_s3_cls11" bottom: "score_s4_cls11" bottom: "score_s5_cls11" + bottom: "score_s1_cls12" bottom: "score_s2_cls12" bottom: "score_s3_cls12" bottom: "score_s4_cls12" bottom: "score_s5_cls12" + bottom: "score_s1_cls13" bottom: "score_s2_cls13" bottom: "score_s3_cls13" bottom: "score_s4_cls13" bottom: "score_s5_cls13" + bottom: "score_s1_cls14" bottom: "score_s2_cls14" bottom: "score_s3_cls14" bottom: "score_s4_cls14" bottom: "score_s5_cls14" + bottom: "score_s1_cls15" bottom: "score_s2_cls15" bottom: "score_s3_cls15" bottom: "score_s4_cls15" bottom: "score_s5_cls15" + bottom: "score_s1_cls16" bottom: "score_s2_cls16" bottom: "score_s3_cls16" bottom: "score_s4_cls16" bottom: "score_s5_cls16" + bottom: "score_s1_cls17" bottom: "score_s2_cls17" bottom: "score_s3_cls17" bottom: "score_s4_cls17" bottom: "score_s5_cls17" + bottom: "score_s1_cls18" bottom: "score_s2_cls18" bottom: "score_s3_cls18" bottom: "score_s4_cls18" bottom: "score_s5_cls18" + bottom: "score_s1_cls19" bottom: "score_s2_cls19" bottom: "score_s3_cls19" bottom: "score_s4_cls19" bottom: "score_s5_cls19" + bottom: "score_s1_cls20" bottom: "score_s2_cls20" bottom: "score_s3_cls20" bottom: "score_s4_cls20" bottom: "score_s5_cls20" + concat_param { axis: 1 } } + +layer { bottom: "score_concat_clsall" top: "score_fuse_clsall" name: "side_fusion" type: "Convolution" + param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0} + convolution_param { num_output: 20 group: 20 kernel_size: 1 pad: 0 stride: 1 bias_term: true + weight_filler {type: "constant" value: 0.2} bias_filler { type: "constant" value: 0 } } } + +layer { type: "MultiChannelReweightedSigmoidCrossEntropyLoss" name: "mcrsce_f" bottom: "score_fuse_clsall" bottom: "label" top:"fuse_loss" loss_weight: 1} diff --git a/CASENet/sbd/solve.py b/CASENet/sbd/solve.py new file mode 100644 index 0000000..5fd9bd0 --- /dev/null +++ b/CASENet/sbd/solve.py @@ -0,0 +1,37 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +import argparse +import os +import sys + +parser = argparse.ArgumentParser(sys.argv[0]) +parser.add_argument("solver_prototxt_file", type=str, help="path to the solver prototxt file") +parser.add_argument( + "-c", + "--pycaffe_folder", + type=str, + default="../../code/python", + help="pycaffe folder that contains the caffe/_caffe.so file", +) +parser.add_argument( + "-m", "--init_model", type=str, default="./model/init.caffemodel", help="path to the initial caffemodel" +) +parser.add_argument("-g", "--gpu", type=int, default=0, help="use which gpu device (default=0)") +args = parser.parse_args(sys.argv[1:]) + +assert os.path.exists(args.solver_prototxt_file) +assert os.path.exists(args.init_model) + +if os.path.exists(os.path.join(args.pycaffe_folder, "caffe/_caffe.so")): + sys.path.insert(0, args.pycaffe_folder) +import caffe + +caffe.set_mode_gpu() +caffe.set_device(args.gpu) + +solver = caffe.SGDSolver(args.solver_prototxt_file) +solver.net.copy_from(args.init_model) + +solver.solve() diff --git a/CASENet/sbd/test.py b/CASENet/sbd/test.py new file mode 100644 index 0000000..fa3c0bd --- /dev/null +++ b/CASENet/sbd/test.py @@ -0,0 +1,96 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# test CASENet: +# python test.py ./config/test_CASENet.prototxt ./model/CASENet_iter_22000.caffemodel -l ~/Dataset/SBD_Aug/val.txt -d ~/Dataset/SBD_Aug -o ./result_CASENet -c ../../caffe/build/install/python + +import argparse +import os +import sys + +import cv2 +import numpy as np + +parser = argparse.ArgumentParser(sys.argv[0]) +parser.add_argument('deploy_prototxt_file', type=str, + help="path to the deploy prototxt file") +parser.add_argument('model', type=str, + help="path to the caffemodel containing the trained weights") +parser.add_argument('-l', '--image_list', type=str, default='', + help="list of image files to be tested") +parser.add_argument('-f', '--image_file', type=str, default='', + help="a single image file to be tested") +parser.add_argument('-d', '--image_dir', type=str, default='', + help="root folder of the image files in the list or the single image file") +parser.add_argument('-o', '--output_dir', type=str, default='.', + help="folder to store the test results") +parser.add_argument('-c', '--pycaffe_folder', type=str, default='../../code/python', + help="pycaffe folder that contains the caffe/_caffe.so file") +parser.add_argument('-g', '--gpu', type=int, default=0, + help="use which gpu device (default=0)") +args = parser.parse_args(sys.argv[1:]) + +assert(os.path.exists(args.deploy_prototxt_file)) +assert(os.path.exists(args.model)) + +if os.path.exists(os.path.join(args.pycaffe_folder,'caffe/_caffe.so')): + sys.path.insert(0, args.pycaffe_folder) +import caffe + +caffe.set_mode_gpu() +caffe.set_device(args.gpu) + +# load input path +if os.path.exists(args.image_list): + with open(args.image_list) as f: + test_lst = [x.strip().split()[0] for x in f.readlines()] + if args.image_dir!='': + test_lst = [ + args.image_dir+x if os.path.isabs(x) + else os.path.join(args.image_dir, x) + for x in test_lst] +else: + image_file = os.path.join(args.image_dir, args.image_file) + if os.path.exists(image_file): + test_lst = [os.path.join(args.image_dir, os.path.basename(image_file))] + else: + raise IOError('nothing to be tested!') + +# load net +net = caffe.Net(args.deploy_prototxt_file, args.model, caffe.TEST) +num_cls = 20 +crop_size = 512 +mean_value = (104.008, 116.669, 122.675) #BGR + +for idx_img in xrange(len(test_lst)): + in_ = cv2.imread(test_lst[idx_img]).astype(np.float32) + width, height = in_.shape[1], in_.shape[0] + if(crop_size < width or crop_size < height): + raise ValueError('Input image size must be smaller than crop size!') + pad_x = crop_size - width + pad_y = crop_size - height + in_ = cv2.copyMakeBorder(in_, 0, pad_y, 0, pad_x, cv2.BORDER_CONSTANT, value=mean_value) + in_ -= np.array(mean_value) + in_ = in_.transpose((2,0,1)) # HxWx3 -> 3xHxW + in_ = in_[np.newaxis, ...] # 3xHxW -> 1x3xHxW + net.blobs['data'].reshape(*in_.shape) + net.blobs['data'].data[...] = in_ + net.forward() + + img_base_name = os.path.basename(test_lst[idx_img]) + img_result_name = os.path.splitext(img_base_name)[0]+'.png' + for idx_cls in xrange(num_cls): + score_pred = net.blobs['score_output'].data[0][idx_cls, 0:height, 0:width] + im = (score_pred*255).astype(np.uint8) + result_root = os.path.join(args.output_dir, 'class_'+str(idx_cls+1)) + if not os.path.exists(result_root): + os.makedirs(result_root) + cv2.imwrite( + os.path.join(result_root, img_result_name), + im) + + print 'processed: '+test_lst[idx_img] + sys.stdout.flush() + +print 'Done!' diff --git a/CASENet/sbd/vis_features.py b/CASENet/sbd/vis_features.py new file mode 100644 index 0000000..9a9e863 --- /dev/null +++ b/CASENet/sbd/vis_features.py @@ -0,0 +1,147 @@ +# Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +import argparse +import os +import sys + +import cv2 +import numpy as np + + +def get_sbd_class_names(): + return[ + 'Airplane', + 'Bicycle', + 'Bird', + 'Boat', + 'Bottle', + 'Bus', + 'Car', + 'Cat', + 'Chair', + 'Cow', + 'Diningtable', + 'Dog', + 'Horse', + 'Motorbike', + 'Person', + 'Pottedplant', + 'Sheep', + 'Sofa', + 'Train', + 'Tvmonitor' + ] + +def normalized_feature_map(fmap): + fmap_min = fmap.min() + fmap_max = fmap.max() + fmap = (fmap-fmap_min)/(fmap_max-fmap_min) + return fmap + +parser = argparse.ArgumentParser(sys.argv[0]) +parser.add_argument('deploy_prototxt_file', type=str, + help="path to the deploy prototxt file") +parser.add_argument('model', type=str, + help="path to the caffemodel containing the trained weights") +parser.add_argument('-t', '--type', type=str, default='CASENet', + help="type of list of features to be visualized: [CASENet]/DSN/CASENet-") +parser.add_argument('-l', '--image_list', type=str, default='', + help="list of image files to be tested") +parser.add_argument('-f', '--image_file', type=str, default='', + help="a single image file to be tested") +parser.add_argument('-d', '--image_dir', type=str, default='', + help="root folder of the image files in the list or the single image file") +parser.add_argument('-o', '--output_dir', type=str, default='.', + help="folder to store the test results") +parser.add_argument('-c', '--pycaffe_folder', type=str, default='../../code/python', + help="pycaffe folder that contains the caffe/_caffe.so file") +parser.add_argument('-g', '--gpu', type=int, default=0, + help="use which gpu device (default=0)") +args = parser.parse_args(sys.argv[1:]) + +assert(os.path.exists(args.deploy_prototxt_file)) +assert(os.path.exists(args.model)) + +if os.path.exists(os.path.join(args.pycaffe_folder,'caffe/_caffe.so')): + sys.path.insert(0, args.pycaffe_folder) +import caffe + +caffe.set_mode_gpu() +caffe.set_device(args.gpu) + +# load input path +if os.path.exists(args.image_list): + with open(args.image_list) as f: + test_lst = [x.strip().split()[0] for x in f.readlines()] + if args.image_dir!='': + test_lst = [ + args.image_dir+x if os.path.isabs(x) + else os.path.join(args.image_dir, x) + for x in test_lst] +else: + image_file = os.path.join(args.image_dir, args.image_file) + if os.path.exists(image_file): + test_lst = [os.path.join(args.image_dir, os.path.basename(image_file))] + else: + raise IOError('nothing to be tested!') + +# load net +net = caffe.Net(args.deploy_prototxt_file, args.model, caffe.TEST) +num_cls = 20 +crop_size = 512 +mean_value = (104.008, 116.669, 122.675) #BGR +cls_names = get_sbd_class_names() + +if not os.path.exists(args.output_dir): + os.makedirs(args.output_dir) + +for idx_img in xrange(len(test_lst)): + in_ = cv2.imread(test_lst[idx_img]).astype(np.float32) + width, height = in_.shape[1], in_.shape[0] + if(crop_size < width or crop_size < height): + raise ValueError('Input image size must be smaller than crop size!') + pad_x = crop_size - width + pad_y = crop_size - height + in_ = cv2.copyMakeBorder(in_, 0, pad_y, 0, pad_x, cv2.BORDER_CONSTANT, value=mean_value) + in_ -= np.array(mean_value) + in_ = in_.transpose((2,0,1)) # HxWx3 -> 3xHxW + in_ = in_[np.newaxis, ...] # 3xHxW -> 1x3xHxW + net.blobs['data'].reshape(*in_.shape) + net.blobs['data'].data[...] = in_ + net.forward() + + img_base_name_noext = os.path.splitext(os.path.basename(test_lst[idx_img]))[0] + if args.type=='CASENet' or args.type=='CASENet-': + cls_activations = ['score_cls_side5_crop'] + # vis side edge activation + for feature in ['score_edge_side1', 'score_edge_side2_crop', 'score_edge_side3_crop']: + side = normalized_feature_map(net.blobs[feature].data[0][0, :, :])[0:height, 0:width] + im = (side*255).astype(np.uint8) + cv.imwrite( + os.path.join(args.output_dir, img_base_name_noext+'_'+args.type+'_'+feature+'.png'), + im) + # vis side class activation + side_cls = normalized_feature_map(np.transpose(net.blobs['score_cls_side5_crop'].data[0], (1, 2, 0))) + for idx_cls in xrange(num_cls): + side_cls_i = side_cls[0:height, 0:width, idx_cls] + im = (side_cls_i * 255).astype(np.uint8) + cv.imwrite( + os.path.join(args.output_dir, img_base_name_noext+'_'+args.type+'_'+feature+'_'+cls_names[idx_cls]+'.png'), + im) + elif args.type=='DSN': + # vis side edge activation per class + for feature in ['score_side1', 'score_side2_crop', 'score_side3_crop', 'score_side4_crop', 'score_side5_crop']: + side_cls = normalized_feature_map(np.transpose(net.blobs[feature].data[0], (1, 2, 0))) + for idx_cls in xrange(num_cls): + side_cls_i = side_cls[0:height, 0:width, idx_cls] + im = (side_cls_i * 255).astype(np.uint8) + cv.imwrite( + os.path.join(args.output_dir, img_base_name_noext+'_'+args.type+'_'+feature+'_'+cls_names[idx_cls]+'.png'), + im) + + print 'processed: '+test_lst[idx_img] + sys.stdout.flush() + +print 'Done!' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..08901d5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,10 @@ + + +# Contributing + +Sorry, but we do not currently accept contributions in the form of pull requests to this repository. However, you are +welcome to post issues (bug reports, feature requests, questions, etc). diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..b54b4da --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,661 @@ + +### GNU AFFERO GENERAL PUBLIC LICENSE + +Version 3, 19 November 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +### Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains +free software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing +under this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +### TERMS AND CONDITIONS + +#### 0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public +License. + +"Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a "modified version" of +the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays "Appropriate Legal Notices" to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +#### 1. Source Code. + +The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +#### 2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes +it unnecessary. + +#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +#### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +#### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +- a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. +- b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section 4 + to "keep intact all notices". +- c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +- d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +#### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +- a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +- b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. +- c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +- d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +- e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the general + public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +#### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +- a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +- b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +- c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +- d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or +- e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +- f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +#### 8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +#### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +#### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +#### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +#### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree to +terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +#### 13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your +version supports such interaction) an opportunity to receive the +Corresponding Source of your version by providing access to the +Corresponding Source from a network server at no charge, through some +standard or customary means of facilitating copying of software. This +Corresponding Source shall include the Corresponding Source for any +work covered by version 3 of the GNU General Public License that is +incorporated pursuant to the following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +#### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Affero General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +#### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +#### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +#### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +### How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively state +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for +the specific requirements. + +You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU AGPL, see . diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 0000000..ecff0b7 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,44 @@ +COPYRIGHT + +All contributions by the University of California: +Copyright (c) 2014-2017 The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014-2017, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +LICENSE + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +CONTRIBUTION AGREEMENT + +By contributing to the BVLC/caffe repository through pull-request, comment, +or otherwise, the contributor releases their content to the +license and copyright terms herein. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d663f3d --- /dev/null +++ b/README.md @@ -0,0 +1,307 @@ + + +# CASENet: Deep Category-Aware Semantic Edge Detection + +## Features + +This source code package contains the C++/Python implementation of our CASENet based on [Caffe](http://github.com/BVLC/caffe) for multi-label semantic edge detection training/testing. There are two folders in this package: + +* caffe + + Our modified Caffe (based on the official Caffe [commit](https://github.com/BVLC/caffe/commit/4efdf7ee49cffefdd7ea099c00dc5ea327640f04) on June 20, 2017), with the C++ *MultiChannelReweightedSigmoidCrossEntropyLossLayer* implementing the multi-label loss function as explained in equation (1) of the CASENet paper. + + We also modified the C++ *ImageSegDataLayer* from [DeepLab-v2](https://bitbucket.org/aquariusjay/deeplab-public-ver2) for reading multi-label edge ground truth stored as binary file. + +* CASENet + + Python scripts and network configurations for training/testing/visualization. + Note that initial and trained model weights (caffemodel files) for SBD/Cityscapes dataset can be downloaded separately from https://doi.org/10.5281/zenodo.7872003. + +## Installation + +### Compile + +1. Clone this repository to create the following folder structure: + +``` +${PACKAGE_ROOT} +├── caffe +│   ├── build +│   ├── cmake +│   ├── data +│   ├── docker +│   ├── docs +│   ├── examples +│   ├── include +│   ├── matlab +│   ├── models +│   ├── python +│   ├── scripts +│   ├── src +│   └── tools +└── CASENet + ├── cityscapes + │   ├── config + │   └── model + └── sbd + ├── config + └── model +``` + +2. Follow the official Caffe's [installation guide](http://caffe.berkeleyvision.org/install_apt.html) to compile the modified Caffe in `${PACKAGE_ROOT}/caffe` (building with cuDNN is supported). + +3. Make sure to build pycaffe. + +## Usage + +### Using Trained Weights + +We have supplied trained weights for easier testing. To use them, simply download them separately from https://doi.org/10.5281/zenodo.7872003 to `${PACKAGE_ROOT}/CASENet/sbd/model`. Similarly for Cityscapes. + +### Experiments + +Assume pycaffe is installed in `${PACKAGE_ROOT}/caffe/build/install/python`. Following instructions use CASENet on Cityscapes dataset as an example. Baselines (Basic/DSN/CASENet-) run similarly. For SBD dataset, change all "cityscapes" to "sbd" in the following instructions. + +1. If you want to train the network for other datasets, in the `${PACKAGE_ROOT}/CASENet/cityscapes/config/train_CASENet`.prototxt, modify the *root_folder* and *source* at lines 27-28 to point to your dataset. + +2. Run the following commands to perform training and testing: +``` +cd ${PACKAGE_ROOT}/CASENet/cityscapes +# Training +python solve.py ./config/solver_CASENet.prototxt -c ../../caffe/build/install/python + +# Testing +python test.py ./config/test_CASENet.prototxt ./model/CASENet_iter_40000.caffemodel -c ../../caffe/build/install/python -l ${Cityscapes_DATASET}/val.txt -d ${Cityscapes_DATASET} -o ./result_CASENet + +# Visualization (note visualization for SBD is slightly different) +python visualize_multilabel.py ${Cityscapes_DATASET}/leftImg8bit/val/frankfurt/frankfurt_000000_000294_leftImg8bit.png +``` + +3. Check `${PACKAGE_ROOT}/CASENet/cityscapes/model` folder for trained weights and check `${PACKAGE_ROOT}/CASENet/cityscapes/result_CASENet` for testing results. Check `${PACKAGE_ROOT}/CASENet/cityscapes/visualize` for visualization results. + +### Training Notes + +If you want to train CASENet on your own dataset, you will need to generate multi-label ground truth that is readable by our modified ImageSegDataLayer, which is essentially a memory buffer dumped in binary format that stores multi-label ground truth image in row-major order, where each pixel of this multi-label image has 4 x num_label_chn **bytes**, i.e., 32 x num_label_chn **bits** (num_label_chn as specified in image_data_param in the training prototxt file). + +For example, a toy multi-label ground truth image with num_label_chn=1 corresponding to a 2x3 input RGB image can be the following bits in memory: +``` +1000000000000000000000000000000000 0000000000000000000000000000000001 0000000000000000000000000000000010 +0000000000000000000000000000000101 0000000000000000000000000000001110 0000000000000000000000000000000000 +``` +which means the following pixel labels: +``` +ignored, edge-type-0, edge-type-1 +edge-type-0-and-2, edge-type-1-and-2-and-3, non-edge +``` +Basically, we use a single bit to encode a single label of a pixel, and the highest bit (the 32-th bit) is used to label ignored pixels excluded from loss computation. More details can be found in line 265-273 of the image_seg_data_layer.cpp file. + +BTW, our *MultiChannelReweightedSigmoidCrossEntropyLossLayer* currently only supports ignoring the 32-th bit (which is enough for the Cityscapes dataset): so if your max number of labels is more than 31 (e.g., the [ADE20K dataset](http://groups.csail.mit.edu/vision/datasets/ADE20K/)), your num_label_chn has to be larger than 1, and you will need to modify *MultiChannelReweightedSigmoidCrossEntropyLossLayer* correspondingly. More details can be found in line 54 and line 130 of the multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp file. + +### Generating Ground Truth Multi-label Edge Map +To generate such ground truth multi-label edge map from ground truth semantic segmentation in Cityscapes and SBD, we provide a separate code package downloadable at https://github.com/Chrisding (License: `MIT`). + +### CASENet Python Scripts Usage + +#### Training Script: solve.py + +``` +usage: solve.py [-h] [-c PYCAFFE_FOLDER] [-m INIT_MODEL] [-g GPU] + solver_prototxt_file + +positional arguments: + solver_prototxt_file path to the solver prototxt file + +optional arguments: + -h, --help show this help message and exit + -c PYCAFFE_FOLDER, --pycaffe_folder PYCAFFE_FOLDER + pycaffe folder that contains the caffe/_caffe.so file + -m INIT_MODEL, --init_model INIT_MODEL + path to the initial caffemodel + -g GPU, --gpu GPU use which gpu device (default=0) +``` + +#### Testing Script: test.py + +``` +usage: test.py [-h] [-l IMAGE_LIST] [-f IMAGE_FILE] [-d IMAGE_DIR] + [-o OUTPUT_DIR] [-c PYCAFFE_FOLDER] [-g GPU] + deploy_prototxt_file model + +positional arguments: + deploy_prototxt_file path to the deploy prototxt file + model path to the caffemodel containing the trained weights + +optional arguments: + -h, --help show this help message and exit + -l IMAGE_LIST, --image_list IMAGE_LIST + list of image files to be tested + -f IMAGE_FILE, --image_file IMAGE_FILE + a single image file to be tested + -d IMAGE_DIR, --image_dir IMAGE_DIR + root folder of the image files in the list or the + single image file + -o OUTPUT_DIR, --output_dir OUTPUT_DIR + folder to store the test results + -c PYCAFFE_FOLDER, --pycaffe_folder PYCAFFE_FOLDER + pycaffe folder that contains the caffe/_caffe.so file + -g GPU, --gpu GPU use which gpu device (default=0) +``` + +#### Visualization Script: visualize_multilabel.py + +``` +usage: visualize_multilabel.py [-h] [-o OUTPUT_FOLDER] [-g GT_NAME] + [-f RESULT_FMT] [-t THRESH] [-c DO_EACH_COMP] + raw_name + +positional arguments: + raw_name input rgb filename + +optional arguments: + -h, --help show this help message and exit + -o OUTPUT_FOLDER, --output_folder OUTPUT_FOLDER + visualization output folder + -g GT_NAME, --gt_name GT_NAME + full path to the corresponding multi-label ground + truth file + -f RESULT_FMT, --result_fmt RESULT_FMT + folders storing testing results for each class + -t THRESH, --thresh THRESH + set any probability<=thresh to 0 + -c DO_EACH_COMP, --do_each_comp DO_EACH_COMP + if gt_name is not None, whether to visualize each + class component (1) or not (0) +``` + +## Modified code +We have modified Caffe, an open-source deep learning tool, to implement our CASENet paper. The modification details are listed below. + +1. Newly added (for CASENet): +``` +include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp +src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp +``` + +2. Copied/modified from the official/DeepLab-v2/HED versions of Caffe (for I/O): +``` +include/caffe/layers/image_dim_prefetching_data_layer.hpp +include/caffe/layers/image_seg_data_layer.hpp +include/caffe/layers/base_data_layer.hpp +include/caffe/data_transformer.hpp +include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp +src/caffe/layers/image_dim_prefetching_data_layer.cpp +src/caffe/layers/image_dim_prefetching_data_layer.cu +src/caffe/layers/image_seg_data_layer.cpp +src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp +src/caffe/data_transformer.cpp +src/caffe/proto/caffe.proto +``` + +## Citation + +If you use the software, please cite the following ([TR2017-100](https://www.merl.com/publications/TR2017-100)): + +```BibTex +@inproceedings{Yu2017jul, + author = {Yu, Zhiding and Feng, Chen and Liu, Ming-Yu and Ramalingam, Srikumar}, + title = {CASENet: Deep Category-Aware Semantic Edge Detection}, + booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, + year = 2017, + month = jul, + doi = {10.1109/CVPR.2017.191}, + url = {https://www.merl.com/publications/TR2017-100} +} +``` + +## Contact + +Tim K Marks () + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) for our policy on contributions. + +## License + +Released under `AGPL-3.0-or-later` license, as found in the [LICENSE.md](LICENSE.md) file. + +All files, except as listed below: + +``` +Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL). + +SPDX-License-Identifier: AGPL-3.0-or-later +``` + +All files in `caffe` folder (except: +`caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp` and +`caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp`) +, and `requirements.txt`: + +``` +Copyright: + +All contributions by the University of California: +Copyright (c) 2014-2017 The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014-2017, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +License: BSD-2-Clause +``` + +and the files below which were copied/modified from the official/DeepLab-v2/HED versions of Caffe (for I/O): +``` +caffe/include/caffe/layers/image_dim_prefetching_data_layer.hpp +caffe/include/caffe/layers/image_seg_data_layer.hpp +caffe/include/caffe/layers/base_data_layer.hpp +caffe/include/caffe/data_transformer.hpp +caffe/include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp +caffe/src/caffe/layers/image_dim_prefetching_data_layer.cpp +caffe/src/caffe/layers/image_dim_prefetching_data_layer.cu +caffe/src/caffe/layers/image_seg_data_layer.cpp +caffe/src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp +caffe/src/caffe/data_transformer.cpp +caffe/src/caffe/proto/caffe.proto +``` + +``` +COPYRIGHT + +All new contributions compared to the original Caffe branch: +Copyright (c) 2015, 2016, Liang-Chieh Chen (UCLA, Google), George Papandreou (Google), +Iasonas Kokkinos (CentraleSupélec /INRIA), Jonathan T. Barron(Google), +Yi Yang (Baidu), Jiang Wang (Baidu), Wei Xu (Baidu), +Kevin Murphy (Google), and Alan L. Yuille (UCLA, JHU) +All rights reserved. + +All contributions by the University of California: +Copyright (c) 2014, 2015, The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014, 2015, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +License: BSD-2-Clause +``` diff --git a/caffe/include/caffe/data_transformer.hpp b/caffe/include/caffe/data_transformer.hpp index 97b4ee6..3f9a790 100644 --- a/caffe/include/caffe/data_transformer.hpp +++ b/caffe/include/caffe/data_transformer.hpp @@ -90,6 +90,11 @@ class DataTransformer { */ void Transform(Blob* input_blob, Blob* transformed_blob); + void TransformImgAndSeg(const std::vector& cv_img_seg, + Blob* transformed_data_blob, Blob* transformed_label_blob, + const int ignore_label); + + /** * @brief Infers the shape of transformed_blob will have when * the transformation is applied to the data. @@ -147,6 +152,7 @@ class DataTransformer { Phase phase_; Blob data_mean_; vector mean_values_; + vector scale_factors_; }; } // namespace caffe diff --git a/caffe/include/caffe/layers/base_data_layer.hpp b/caffe/include/caffe/layers/base_data_layer.hpp index c8b6998..5c832d8 100644 --- a/caffe/include/caffe/layers/base_data_layer.hpp +++ b/caffe/include/caffe/layers/base_data_layer.hpp @@ -47,6 +47,7 @@ template class Batch { public: Blob data_, label_; + Blob dim_; }; template diff --git a/caffe/include/caffe/layers/image_dim_prefetching_data_layer.hpp b/caffe/include/caffe/layers/image_dim_prefetching_data_layer.hpp new file mode 100644 index 0000000..4b53b55 --- /dev/null +++ b/caffe/include/caffe/layers/image_dim_prefetching_data_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_IMAGE_DIM_PREFETCHING_DATA_LAYER_HPP_ +#define CAFFE_IMAGE_DIM_PREFETCHING_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +template +class ImageDimPrefetchingDataLayer : public BasePrefetchingDataLayer { + public: + explicit ImageDimPrefetchingDataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param) {} + virtual ~ImageDimPrefetchingDataLayer() {} + // LayerSetUp: implements common data layer setup functionality, and calls + // DataLayerSetUp to do special data layer setup for individual layer types. + // This method may not be overridden. + void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + // The thread's function + //virtual void InternalThreadEntry() {} + + protected: + virtual void load_batch(Batch* batch) = 0; + + Blob prefetch_data_dim_; + bool output_data_dim_; +}; + +} // namespace caffe + +#endif // CAFFE_IMAGE_DIM_PREFETCHING_DATA_LAYER_HPP_ \ No newline at end of file diff --git a/caffe/include/caffe/layers/image_seg_data_layer.hpp b/caffe/include/caffe/layers/image_seg_data_layer.hpp new file mode 100644 index 0000000..ba9e957 --- /dev/null +++ b/caffe/include/caffe/layers/image_seg_data_layer.hpp @@ -0,0 +1,44 @@ +#ifndef CAFFE_IMAGE_SEG_DATA_LAYER_HPP_ +#define CAFFE_IMAGE_SEG_DATA_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/image_dim_prefetching_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + + +namespace caffe { + +template +class ImageSegDataLayer : public ImageDimPrefetchingDataLayer { + public: + explicit ImageSegDataLayer(const LayerParameter& param) + : ImageDimPrefetchingDataLayer(param) {} + virtual ~ImageSegDataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ImageSegData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 3; } + virtual inline bool AutoTopBlobs() const { return true; } + + protected: + virtual void ShuffleImages(); + virtual void load_batch(Batch* batch); + + Blob transformed_label_; + shared_ptr prefetch_rng_; + vector > lines_; + int lines_id_; +}; + +} // namespace caffe + +#endif // CAFFE_IMAGE_SEG_DATA_LAYER_HPP_ diff --git a/caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp b/caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp new file mode 100644 index 0000000..95a8eba --- /dev/null +++ b/caffe/include/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp @@ -0,0 +1,58 @@ +// Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +#ifndef CAFFE_MULTICHANNEL_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ +#define CAFFE_MULTICHANNEL_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the cross-entropy (logistic) loss for multi-label classification. + * + * For details please check the CASENet paper. + */ +template +class MultiChannelReweightedSigmoidCrossEntropyLossLayer : public LossLayer { + public: + explicit MultiChannelReweightedSigmoidCrossEntropyLossLayer(const LayerParameter& param) + : LossLayer(param), + sigmoid_layer_(new SigmoidLayer(param)), + sigmoid_output_(new Blob()) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MultiChannelReweightedSigmoidCrossEntropyLoss"; } + + protected: + /// @copydoc MultiChannelReweightedSigmoidCrossEntropyLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// The internal SigmoidLayer used to map predictions to probabilities. + shared_ptr > sigmoid_layer_; + /// sigmoid_output stores the output of the SigmoidLayer. + shared_ptr > sigmoid_output_; + /// bottom vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_bottom_vec_; + /// top vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_top_vec_; +}; + +} // namespace caffe + +#endif // CAFFE_MULTICHANNEL_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ diff --git a/caffe/include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp b/caffe/include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp new file mode 100644 index 0000000..d601851 --- /dev/null +++ b/caffe/include/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp @@ -0,0 +1,110 @@ +#ifndef CAFFE_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ +#define CAFFE_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the cross-entropy (logistic) loss @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + + * (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$, often used for predicting targets interpreted as probabilities. + * + * This layer is implemented rather than separate + * SigmoidLayer + CrossEntropyLayer + * as its gradient computation is more numerically stable. + * At test time, this layer can be replaced simply by a SigmoidLayer. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the scores @f$ x \in [-\infty, +\infty]@f$, + * which this layer maps to probability predictions + * @f$ \hat{p}_n = \sigma(x_n) \in [0, 1] @f$ + * using the sigmoid function @f$ \sigma(.) @f$ (see SigmoidLayer). + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$ y \in [0, 1] @f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed cross-entropy loss: @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$ + */ +template +class ReweightedSigmoidCrossEntropyLossLayer : public LossLayer { + public: + explicit ReweightedSigmoidCrossEntropyLossLayer(const LayerParameter& param) + : LossLayer(param), + sigmoid_layer_(new SigmoidLayer(param)), + sigmoid_output_(new Blob()) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ReweightedSigmoidCrossEntropyLoss"; } + + protected: + /// @copydoc ReweightedSigmoidCrossEntropyLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the sigmoid cross-entropy loss error gradient w.r.t. the + * predictions. + * + * Gradients cannot be computed with respect to the target inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as gradient computation with respect + * to the targets is not implemented. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$x@f$; Backward computes diff + * @f$ \frac{\partial E}{\partial x} = + * \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) + * @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + //virtual void Backward_gpu(const vector*>& top, + // const vector& propagate_down, const vector*>& bottom); + + /// The internal SigmoidLayer used to map predictions to probabilities. + shared_ptr > sigmoid_layer_; + /// sigmoid_output stores the output of the SigmoidLayer. + shared_ptr > sigmoid_output_; + /// bottom vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_bottom_vec_; + /// top vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_top_vec_; +}; + +} // namespace caffe + +#endif // CAFFE_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ diff --git a/caffe/src/caffe/data_transformer.cpp b/caffe/src/caffe/data_transformer.cpp index 3012251..239e46e 100644 --- a/caffe/src/caffe/data_transformer.cpp +++ b/caffe/src/caffe/data_transformer.cpp @@ -1,5 +1,7 @@ #ifdef USE_OPENCV +#include #include +#include #endif // USE_OPENCV #include @@ -36,6 +38,12 @@ DataTransformer::DataTransformer(const TransformationParameter& param, mean_values_.push_back(param_.mean_value(c)); } } + // check if we want to do random scaling + if (param_.scale_factors_size() > 0) { + for (int i = 0; i < param_.scale_factors_size(); ++i) { + scale_factors_.push_back(param_.scale_factors(i)); + } + } } template @@ -438,6 +446,295 @@ void DataTransformer::Transform(Blob* input_blob, } } +template +void DataTransformer::TransformImgAndSeg( + const std::vector& cv_img_seg, + Blob* transformed_data_blob, + Blob* transformed_label_blob, + const int ignore_label) { + CHECK(cv_img_seg.size() >= 2) << "Input must contain at least image and seg."; + + const int img_channels = cv_img_seg[0].channels(); + // height and width may change due to pad for cropping + int img_height = cv_img_seg[0].rows; + int img_width = cv_img_seg[0].cols; + + const int seg_channels = cv_img_seg[1].channels(); + int seg_height = cv_img_seg[1].rows; + int seg_width = cv_img_seg[1].cols; + + const int data_channels = transformed_data_blob->channels(); + const int data_height = transformed_data_blob->height(); + const int data_width = transformed_data_blob->width(); + + const int label_channels = transformed_label_blob->channels(); + const int label_height = transformed_label_blob->height(); + const int label_width = transformed_label_blob->width(); + + const int num_edge_chn = cv_img_seg.size()>2 ? cv_img_seg.size()-2 : 0; + + // Sanity checks for CASENet + CHECK_EQ(data_channels, img_channels + num_edge_chn); + CHECK_EQ(label_channels, seg_channels); + + CHECK_EQ(img_height, seg_height); + CHECK_EQ(data_height, label_height); + + CHECK_EQ(img_width, seg_width); + CHECK_EQ(data_width, label_width); + + CHECK(cv_img_seg[0].depth() == CV_8U) + << "Image data type must be unsigned byte"; + CHECK(cv_img_seg[1].depth() == CV_8U || cv_img_seg[1].depth() == CV_32F) + << "Seg data type must be unsigned byte or float";//for CASENet + + //const int crop_size = param_.crop_size(); + int crop_width = 0; + int crop_height = 0; + CHECK((!param_.has_crop_size() && param_.has_crop_height() && param_.has_crop_width()) + || (!param_.has_crop_height() && !param_.has_crop_width())) + << "Must either specify crop_size or both crop_height and crop_width."; + if (param_.has_crop_size()) { + crop_width = param_.crop_size(); + crop_height = param_.crop_size(); + } + if (param_.has_crop_height() && param_.has_crop_width()) { + crop_width = param_.crop_width(); + crop_height = param_.crop_height(); + } + + const Dtype scale = param_.scale(); + const bool do_mirror = param_.mirror() && Rand(2); + const bool has_mean_file = param_.has_mean_file(); + const bool has_mean_values = mean_values_.size() > 0; + + CHECK_GT(img_channels, 0); + + Dtype* mean = NULL; + if (has_mean_file) { + CHECK_EQ(img_channels, data_mean_.channels()); + CHECK_EQ(img_height, data_mean_.height()); + CHECK_EQ(img_width, data_mean_.width()); + mean = data_mean_.mutable_cpu_data(); + } + if (has_mean_values) { + CHECK(mean_values_.size() == 1 || mean_values_.size() == img_channels) << + "Specify either 1 mean_value or as many as channels: " << img_channels; + if (img_channels > 1 && mean_values_.size() == 1) { + // Replicate the mean_value for simplicity + for (int c = 1; c < img_channels; ++c) { + mean_values_.push_back(mean_values_[0]); + } + } + } + + // start to perform transformation + cv::Mat cv_cropped_img; + cv::Mat cv_cropped_seg; + std::vector cv_cropped_edges( num_edge_chn ); + + // perform scaling + if (scale_factors_.size() > 0) { + Dtype scale; + if (phase_ == TRAIN) { + int scale_ind = Rand(scale_factors_.size()); + scale = scale_factors_[scale_ind]; + } else { + // Always use the first indicated scale in testing + scale = scale_factors_[0]; //for CASENet + } + + if (scale != 1) { + img_height *= scale; + img_width *= scale; + cv::resize(cv_img_seg[0], cv_cropped_img, cv::Size(img_width, img_height), 0, 0, + cv::INTER_LINEAR); + cv::resize(cv_img_seg[1], cv_cropped_seg, cv::Size(img_width, img_height), 0, 0, + cv::INTER_NEAREST); + //resize edge maps, if any + for(int ith=0; ith::depth);//for CASENet + + // Check if we need to pad img to fit for crop_size + // copymakeborder + int pad_height = std::max(crop_height - img_height, 0); + int pad_width = std::max(crop_width - img_width, 0); + if (pad_height > 0 || pad_width > 0) { + cv::copyMakeBorder(cv_cropped_img, cv_cropped_img, 0, pad_height, + 0, pad_width, cv::BORDER_CONSTANT, + cv::Scalar(mean_values_[0], mean_values_[1], mean_values_[2])); + if(is_label_ml) { + const unsigned int my_ignore_label = 1 << 31; + const float* p_my_ignore_label = reinterpret_cast(&my_ignore_label); + cv::copyMakeBorder(cv_cropped_seg, cv_cropped_seg, 0, pad_height, + 0, pad_width, cv::BORDER_CONSTANT, + cv::Scalar::all(0)); + float* ptr = (float*)cv_cropped_seg.data; + int offset = crop_width * label_channels; + for (int i = 0; i < crop_height; i++){ + for (int j = 0; j < crop_width; j++){ + if ((i >= img_height) || (j >= img_width)){ + ptr[offset*i + label_channels*j + (label_channels-1)] = *p_my_ignore_label; + } + } + } + } + else { + cv::copyMakeBorder(cv_cropped_seg, cv_cropped_seg, 0, pad_height, + 0, pad_width, cv::BORDER_CONSTANT, + cv::Scalar(ignore_label)); + } + //pad edge maps, if any + for(int ith=0; ithmutable_cpu_data(); + Dtype* transformed_label = transformed_label_blob->mutable_cpu_data(); + + int top_index; + const double* data_ptr = NULL; + const uchar* label_ptr = NULL; + const float* labelml_ptr = NULL; + + for (int h = 0; h < data_height; ++h) { + data_ptr = cv_cropped_img.ptr(h); + if(is_label_ml) { + labelml_ptr = cv_cropped_seg.ptr(h); + } else { + label_ptr = cv_cropped_seg.ptr(h); + } + + int data_index = 0; + int label_index = 0; + + for (int w = 0; w < data_width; ++w) { + // for image + for (int c = 0; c < img_channels; ++c) { + if (do_mirror) { + top_index = (c * data_height + h) * data_width + (data_width - 1 - w); + } else { + top_index = (c * data_height + h) * data_width + w; + } + Dtype pixel = static_cast(data_ptr[data_index++]); + if (has_mean_file) { + int mean_index = (c * img_height + h_off + h) * img_width + w_off + w; + transformed_data[top_index] = + (pixel - mean[mean_index]) * scale; + } else { + if (has_mean_values) { + transformed_data[top_index] = + (pixel - mean_values_[c]) * scale; + } else { + transformed_data[top_index] = pixel * scale; + } + } + } + + // for segmentation + // for CASENet + for (int c = 0; c < label_channels; ++c) { + if (do_mirror) { + top_index = (c * data_height + h) * data_width + (data_width - 1 - w); + } + else { + top_index = (c * data_height + h) * data_width + w; + } + if (is_label_ml) { + Dtype pixel = static_cast(labelml_ptr[label_index++]); + transformed_label[top_index] = pixel; + } + else { + Dtype pixel = static_cast(label_ptr[label_index++]); + transformed_label[top_index] = pixel; + } + } + } + } + + const float* edge_ptr; + // for edges, if any + for(int ith=0; ith(h); + for (int w = 0; w < data_width; ++w) { + if (do_mirror) { + top_index = h * data_width + data_width - 1 - w + top_offset; + } else { + top_index = h * data_width + w + top_offset; + } + transformed_data[top_index] = static_cast(edge_ptr[w]) / 255.0; + } + } + } +} + template vector DataTransformer::InferBlobShape(const Datum& datum) { if (datum.encoded()) { diff --git a/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cpp b/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cpp new file mode 100644 index 0000000..9122d5b --- /dev/null +++ b/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cpp @@ -0,0 +1,84 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/image_dim_prefetching_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +template +void ImageDimPrefetchingDataLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + BaseDataLayer::LayerSetUp(bottom, top); + if (top.size() == 3) { + output_data_dim_ = true; + } else { + output_data_dim_ = false; + } + for (int i = 0; i < BasePrefetchingDataLayer::prefetch_.size(); ++i) { + this->prefetch_[i]->data_.mutable_cpu_data(); + if (this->output_labels_) { + this->prefetch_[i]->label_.mutable_cpu_data(); + } + if (output_data_dim_) { + this->prefetch_[i]->dim_.mutable_cpu_data(); + } + } +#ifndef CPU_ONLY + if (Caffe::mode() == Caffe::GPU) { + for (int i = 0; i < BasePrefetchingDataLayer::prefetch_.size(); ++i) { + this->prefetch_[i]->data_.mutable_gpu_data(); + if (this->output_labels_) { + this->prefetch_[i]->label_.mutable_gpu_data(); + } + if (output_data_dim_) { + this->prefetch_[i]->dim_.mutable_gpu_data(); + } + } + } +#endif + DLOG(INFO) << "Initializing prefetch"; + this->data_transformer_->InitRand(); + BasePrefetchingDataLayer::StartInternalThread(); + DLOG(INFO) << "Prefetch initialized."; +} + +template +void ImageDimPrefetchingDataLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + Batch* batch = + this->prefetch_full_.pop("Data layer prefetch queue empty"); + // Reshape to loaded data. + top[0]->ReshapeLike(batch->data_); + // Copy the data + caffe_copy(batch->data_.count(), batch->data_.cpu_data(), + top[0]->mutable_cpu_data()); + DLOG(INFO) << "Prefetch copied"; + if (this->output_labels_) { + // Reshape to loaded labels. + top[1]->ReshapeLike(batch->label_); + // Copy the labels. + caffe_copy(batch->label_.count(), batch->label_.cpu_data(), + top[1]->mutable_cpu_data()); + } + if (output_data_dim_) { + top[2]->ReshapeLike(batch->dim_); + caffe_copy(batch->dim_.count(), batch->dim_.cpu_data(), + top[2]->mutable_cpu_data()); + } + + this->prefetch_free_.push(batch); +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(ImageDimPrefetchingDataLayer, Forward); +#endif + +INSTANTIATE_CLASS(ImageDimPrefetchingDataLayer); + +} // namespace caffe diff --git a/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cu b/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cu new file mode 100644 index 0000000..efa1836 --- /dev/null +++ b/caffe/src/caffe/layers/image_dim_prefetching_data_layer.cu @@ -0,0 +1,39 @@ +#include + +#include "caffe/layers/image_dim_prefetching_data_layer.hpp" + +namespace caffe { + +template +void ImageDimPrefetchingDataLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + Batch* batch = + BasePrefetchingDataLayer::prefetch_full_.pop("Data layer prefetch queue empty"); + // Reshape to loaded data. + top[0]->ReshapeLike(batch->data_); + // Copy the data + caffe_copy(batch->data_.count(), batch->data_.gpu_data(), + top[0]->mutable_gpu_data()); + if (this->output_labels_) { + // Reshape to loaded labels. + top[1]->ReshapeLike(batch->label_); + // Copy the labels. + caffe_copy(batch->label_.count(), batch->label_.gpu_data(), + top[1]->mutable_gpu_data()); + } + if (output_data_dim_) { + // Reshape to loaded labels. + top[2]->ReshapeLike(batch->dim_); + // Copy the labels. + caffe_copy(batch->dim_.count(), batch->dim_.gpu_data(), + top[2]->mutable_gpu_data()); + } + // Ensure the copy is synchronous wrt the host, so that the next batch isn't + // copied in meanwhile. + CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); + BasePrefetchingDataLayer::prefetch_free_.push(batch); +} + +INSTANTIATE_LAYER_GPU_FORWARD(ImageDimPrefetchingDataLayer); + +} // namespace caffe diff --git a/caffe/src/caffe/layers/image_seg_data_layer.cpp b/caffe/src/caffe/layers/image_seg_data_layer.cpp new file mode 100644 index 0000000..8f72b22 --- /dev/null +++ b/caffe/src/caffe/layers/image_seg_data_layer.cpp @@ -0,0 +1,331 @@ +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "caffe/data_transformer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/layers/image_seg_data_layer.hpp" +#include "caffe/util/benchmark.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/util/rng.hpp" + +namespace caffe { + +#ifdef USE_OPENCV +static cv::Mat ReadImageToCVMat(const string& filename, + const int height, const int width, const bool is_color, + int* img_height, int* img_width) { + cv::Mat cv_img; + int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR : + CV_LOAD_IMAGE_GRAYSCALE); + cv::Mat cv_img_origin = cv::imread(filename, cv_read_flag); + if (!cv_img_origin.data) { + LOG(ERROR) << "Could not open or find file " << filename; + return cv_img_origin; + } + if (height > 0 && width > 0) { + cv::resize(cv_img_origin, cv_img, cv::Size(width, height)); + } else { + cv_img = cv_img_origin; + } + if (img_height != NULL) { + *img_height = cv_img.rows; + } + if (img_width != NULL) { + *img_width = cv_img.cols; + } + + return cv_img; +} +#endif // USE_OPENCV + +template +ImageSegDataLayer::~ImageSegDataLayer() { + this->StopInternalThread(); +} + +template +void ImageSegDataLayer::DataLayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int new_height = this->layer_param_.image_data_param().new_height(); + const int new_width = this->layer_param_.image_data_param().new_width(); + const bool is_color = this->layer_param_.image_data_param().is_color(); + const int label_type = this->layer_param_.image_data_param().label_type(); + const int num_label_chn = this->layer_param_.image_data_param().num_label_chn(); + string root_folder = this->layer_param_.image_data_param().root_folder(); + + TransformationParameter transform_param = this->layer_param_.transform_param(); + CHECK(transform_param.has_mean_file() == false) << + "ImageSegDataLayer does not support mean file"; + CHECK( (new_height == 0 && new_width == 0) || + (new_height > 0 && new_width > 0) ) << "Current implementation requires " + "new_height and new_width to be set at the same time."; + CHECK( (transform_param.scale_factors_size()==0) || + (label_type!=ImageDataParameter_LabelType_PIXELML) ) + << "label_type PIXELML doesn't support scaling for now."; + CHECK(((num_label_chn > 1) && (label_type == ImageDataParameter_LabelType_PIXELML)) || + (num_label_chn == 1)) + << "Multi-channel label is only supported by PIXELML."; + + // Read the file with filenames and labels + const string& source = this->layer_param_.image_data_param().source(); + LOG(INFO) << "Opening file " << source; + std::ifstream infile(source.c_str()); + + string linestr; + while (std::getline(infile, linestr)) { + std::istringstream iss(linestr); + string imgfn; + iss >> imgfn; + string segfn = ""; + if (label_type != ImageDataParameter_LabelType_NONE) { + iss >> segfn; + } + lines_.push_back(std::make_pair(imgfn, segfn)); + } + + if (this->layer_param_.image_data_param().shuffle()) { + // randomly shuffle data + LOG(INFO) << "Shuffling data"; + const unsigned int prefetch_rng_seed = caffe_rng_rand(); + prefetch_rng_.reset(new Caffe::RNG(prefetch_rng_seed)); + ShuffleImages(); + } + LOG(INFO) << "A total of " << lines_.size() << " images."; + + lines_id_ = 0; + // Check if we would need to randomly skip a few data points + if (this->layer_param_.image_data_param().rand_skip()) { + unsigned int skip = caffe_rng_rand() % + this->layer_param_.image_data_param().rand_skip(); + LOG(INFO) << "Skipping first " << skip << " data points."; + CHECK_GT(lines_.size(), skip) << "Not enough points to skip"; + lines_id_ = skip; + } + // Read an image, and use it to initialize the top blob. + cv::Mat cv_img = ReadImageToCVMat(root_folder + lines_[lines_id_].first, + new_height, new_width, is_color); + CHECK(cv_img.data) << "Could not load " << lines_[lines_id_].first; + + const int num_edge_chn = this->layer_param_.image_data_param().num_edge_chn(); + const int channels = cv_img.channels() + num_edge_chn; + const int height = cv_img.rows; + const int width = cv_img.cols; + // image + //const int crop_size = this->layer_param_.transform_param().crop_size(); + int crop_width = 0; + int crop_height = 0; + CHECK((!transform_param.has_crop_size() && transform_param.has_crop_height() && transform_param.has_crop_width()) + || (!transform_param.has_crop_height() && !transform_param.has_crop_width())) + << "Must either specify crop_size or both crop_height and crop_width."; + if (transform_param.has_crop_size()) { + crop_width = transform_param.crop_size(); + crop_height = transform_param.crop_size(); + } + if (transform_param.has_crop_height() && transform_param.has_crop_width()) { + crop_width = transform_param.crop_width(); + crop_height = transform_param.crop_height(); + } + + const int batch_size = this->layer_param_.image_data_param().batch_size(); + + //Allocate spaces for data and label blobs + if (crop_width > 0 && crop_height > 0) { + //image + top[0]->Reshape(batch_size, channels, crop_height, crop_width); + this->transformed_data_.Reshape(batch_size, channels, crop_height, crop_width); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(batch_size, channels, crop_height, crop_width); + } + + //label + top[1]->Reshape(batch_size, num_label_chn, crop_height, crop_width); + this->transformed_label_.Reshape(batch_size, num_label_chn, crop_height, crop_width); + for (int i = 0; i < this->prefetch_.size(); ++i) { + //Check how much channels needed to store labels for CASENet + this->prefetch_[i]->label_.Reshape(batch_size, num_label_chn, crop_height, crop_width); + } + } else { + //image + top[0]->Reshape(batch_size, channels, height, width); + this->transformed_data_.Reshape(batch_size, channels, height, width); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(batch_size, channels, height, width); + } + + //label + top[1]->Reshape(batch_size, num_label_chn, height, width); + this->transformed_label_.Reshape(batch_size, num_label_chn, height, width); + for (int i = 0; i < this->prefetch_.size(); ++i) { + //Check how much channels needed to store labels for CASENet + this->prefetch_[i]->label_.Reshape(batch_size, num_label_chn, height, width); + } + } + // image dimensions, for each image, stores (img_height, img_width) + top[2]->Reshape(batch_size, 1, 1, 2); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->dim_.Reshape(batch_size, 1, 1, 2); + } + + LOG(INFO) << "output data size: " << top[0]->num() << "," + << top[0]->channels() << "," << top[0]->height() << "," + << top[0]->width(); + // label + LOG(INFO) << "output label size: " << top[1]->num() << "," + << top[1]->channels() << "," << top[1]->height() << "," + << top[1]->width(); + // image_dim + LOG(INFO) << "output data_dim size: " << top[2]->num() << "," + << top[2]->channels() << "," << top[2]->height() << "," + << top[2]->width(); +} + +template +void ImageSegDataLayer::ShuffleImages() { + caffe::rng_t* prefetch_rng = + static_cast(prefetch_rng_->generator()); + shuffle(lines_.begin(), lines_.end(), prefetch_rng); +} + +// This function is called on prefetch thread +template +void ImageSegDataLayer::load_batch(Batch* batch) { + CPUTimer batch_timer; + batch_timer.Start(); + double read_time = 0; + double trans_time = 0; + CPUTimer timer; + CHECK(batch->data_.count()); + CHECK(this->transformed_data_.count()); + + Dtype* top_data = batch->data_.mutable_cpu_data(); + Dtype* top_label = batch->label_.mutable_cpu_data(); + Dtype* top_data_dim = batch->dim_.mutable_cpu_data(); + + const int max_height = batch->data_.height(); + const int max_width = batch->data_.width(); + + ImageDataParameter image_data_param = this->layer_param_.image_data_param(); + const int batch_size = image_data_param.batch_size(); + const int new_height = image_data_param.new_height(); + const int new_width = image_data_param.new_width(); + const int label_type = this->layer_param_.image_data_param().label_type(); + const int ignore_label = image_data_param.ignore_label(); + const bool is_color = image_data_param.is_color(); + string root_folder = image_data_param.root_folder(); + const int num_label_chn = image_data_param.num_label_chn(); + const int num_edge_chn = image_data_param.num_edge_chn(); + const std::string edge_file_prefix_format = image_data_param.edge_file_prefix_format(); + + const int lines_size = lines_.size(); + int top_data_dim_offset; + + for (int item_id = 0; item_id < batch_size; ++item_id) { + top_data_dim_offset = batch->dim_.offset(item_id); + + std::vector cv_img_seg; + + // get a blob + timer.Start(); + CHECK_GT(lines_size, lines_id_); + + int img_row, img_col; + cv_img_seg.push_back(ReadImageToCVMat(root_folder + lines_[lines_id_].first, + new_height, new_width, is_color, &img_row, &img_col)); + + // TODO(jay): implement resize in ReadImageToCVMat + // NOTE data_dim may not work when min_scale and max_scale != 1 + top_data_dim[top_data_dim_offset] = static_cast(std::min(max_height, img_row)); + top_data_dim[top_data_dim_offset + 1] = static_cast(std::min(max_width, img_col)); + + if (!cv_img_seg[0].data) { + DLOG(INFO) << "Fail to load img: " << root_folder + lines_[lines_id_].first; + } + if (label_type == ImageDataParameter_LabelType_PIXEL) { + cv_img_seg.push_back(ReadImageToCVMat(root_folder + lines_[lines_id_].second, + new_height, new_width, false)); + if (!cv_img_seg[1].data) { + DLOG(INFO) << "Fail to load seg: " << root_folder + lines_[lines_id_].second; + } + } + // Added for Multi-Label (ML) ground truth label in CASENet + else if (label_type == ImageDataParameter_LabelType_PIXELML) { + const int my_rows = cv_img_seg[0].rows; + const int my_cols = cv_img_seg[0].cols; + const int my_npix = my_rows * my_cols; + cv_img_seg.push_back(cv::Mat(my_rows, my_cols, CV_32FC(num_label_chn))); //allocate memory space + std::FILE* fp = std::fopen((root_folder + lines_[lines_id_].second).c_str(), "rb"); + if (!fp) { + DLOG(INFO) << "Fail to load label: " << root_folder + lines_[lines_id_].second; + } else { + size_t read_elems = std::fread((void*)cv_img_seg[1].data, 4*num_label_chn, my_npix, fp); //each pixel has 4*num_label_chn bytes + CHECK_EQ(read_elems, my_npix) << "Fail to read enough data " << read_elems << "(expected: " << my_npix << ")"; + std::fclose(fp); + } + } + else if (label_type == ImageDataParameter_LabelType_IMAGE) { + const int label = atoi(lines_[lines_id_].second.c_str()); + cv::Mat seg(cv_img_seg[0].rows, cv_img_seg[0].cols, + CV_8UC1, cv::Scalar(label)); + cv_img_seg.push_back(seg); + } + else { + cv::Mat seg(cv_img_seg[0].rows, cv_img_seg[0].cols, + CV_8UC1, cv::Scalar(ignore_label)); + cv_img_seg.push_back(seg); + } + + //read edge + for(int ith_chn=0; ith_chndata_.offset(item_id); + this->transformed_data_.set_cpu_data(top_data + offset); + + offset = batch->label_.offset(item_id); + this->transformed_label_.set_cpu_data(top_label + offset); + + this->data_transformer_->TransformImgAndSeg(cv_img_seg, + &(this->transformed_data_), &(this->transformed_label_), + ignore_label); + trans_time += timer.MicroSeconds(); + + // go to the next std::vector::iterator iter; + lines_id_++; + if (lines_id_ >= lines_size) { + // We have reached the end. Restart from the first. + DLOG(INFO) << "Restarting data prefetching from start."; + lines_id_ = 0; + if (this->layer_param_.image_data_param().shuffle()) { + ShuffleImages(); + } + } + } + batch_timer.Stop(); + DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms."; + DLOG(INFO) << " Read time: " << read_time / 1000 << " ms."; + DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms."; +} + +INSTANTIATE_CLASS(ImageSegDataLayer); +REGISTER_LAYER_CLASS(ImageSegData); + +} // namespace caffe diff --git a/caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp b/caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp new file mode 100644 index 0000000..d48d7b0 --- /dev/null +++ b/caffe/src/caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.cpp @@ -0,0 +1,220 @@ +// Copyright (C) 2017, 2023 Mitsubishi Electric Research Laboratories (MERL) +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +#include +#include +#include + +#include + +#include "caffe/layers/multichannel_reweighted_sigmoid_cross_entropy_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void MultiChannelReweightedSigmoidCrossEntropyLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + CHECK( bottom[0]->channels() < (int)(bottom[1]->channels()*32) ) + << "The number of data channels must be smaller than label channels!"; + + sigmoid_bottom_vec_.clear(); + sigmoid_bottom_vec_.push_back(bottom[0]); + sigmoid_top_vec_.clear(); + sigmoid_top_vec_.push_back(sigmoid_output_.get()); + sigmoid_layer_->SetUp(sigmoid_bottom_vec_, sigmoid_top_vec_); +} + +template +void MultiChannelReweightedSigmoidCrossEntropyLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + // now bottom[1], i.e., target, will have less count than bottom[0] + CHECK_EQ(bottom[0]->width()*bottom[0]->height(), bottom[1]->width()*bottom[1]->height()) << + "MULTICHANNEL_REWEIGHTED_SIGMOID_CROSS_ENTROPY_LOSS layer inputs must have the same spatial dimension."; + sigmoid_layer_->Reshape(sigmoid_bottom_vec_, sigmoid_top_vec_); +} + +template +void MultiChannelReweightedSigmoidCrossEntropyLossLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the sigmoid outputs. + sigmoid_bottom_vec_[0] = bottom[0]; + sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); + // Compute the loss (negative log likelihood) + const int count = bottom[0]->count();// Volume size + const int num = bottom[0]->num();// Batch size + // Stable version of loss computation from input data + const Dtype* input_data = bottom[0]->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + const int data_channels = bottom[0]->channels(); + const int label_channels = bottom[1]->channels();// Target blob is n-channel, where n*32 > data_channel. We treat each float bit of the blob as a target channel. + const int label_channels_use = data_channels / (int)(32) + 1;// Number of effective label channels in use. + Dtype loss_pos = 0; + Dtype loss_neg = 0; + + const unsigned int ignored_bit = (1 << 31); + int WxH = count / (num * data_channels); + const int offset_img_ignore = (label_channels - 1) * WxH;// Precompute the offset of the label channel containing ignore bit in each image. + for (int i = 0; i < num; ++i) {// image index + const int offset_batch_label = i*label_channels*WxH;// Precompute the global offset of each label image. + const int offset_ignore = offset_batch_label + offset_img_ignore; // Precompute the global offset of the label channel containing ignore bit. + // Count class-agnostic edge pixels + Dtype count_pos = 0; + Dtype count_neg = 0; + for (int j = 0; j < WxH; ++j) {// (H, W) pixel index + const unsigned int* ptr_ignore = reinterpret_cast(target + offset_ignore + j); + const bool ignored = (*ptr_ignore) & ignored_bit; + if (ignored) continue; + bool flag_pos = false; + for (int k = 0; k < label_channels_use; ++k){// Channel index + const unsigned int* ptr = reinterpret_cast(target + offset_batch_label + k*WxH + j); + if (*ptr != 0) { + flag_pos = true; + break; + } + } + if (flag_pos) count_pos++; + else count_neg++; + } + const Dtype count_all = count_pos + count_neg; + // Compute channel-wise sigmoid loss and reweight with class-agnostic edge pixel count + for(int k = 0; k < data_channels; ++k) {// Channel index + Dtype temp_loss_pos = 0; + Dtype temp_loss_neg = 0; + const int offset_input = (i*data_channels+k)*WxH; + const int quotient_label = k / (int)(32);// Precompute the corresponding label channel + const int remainder_label = k % 32;// Precompute the corresponding bit position in a label channel + const unsigned int true_bit = (1 << remainder_label);// Precompute the 32-bit label with one specific bit being true + const int offset_label = offset_batch_label + quotient_label*WxH;// Precompute the global offset of the label channel containing interested bit + for (int j = 0; j < WxH; j ++) {// (H, W) pixel index + const Dtype& input_j_k = input_data[offset_input + j]; + const unsigned int* ptr_ignore = reinterpret_cast(target + offset_ignore + j); + const bool ignored = (*ptr_ignore) & ignored_bit; + if(ignored) continue; + const unsigned int* ptr = reinterpret_cast(target + offset_label + j); + const bool label_j_k = (*ptr) & true_bit; + if (label_j_k) { + temp_loss_pos -= input_j_k * (1 - (input_j_k >= 0)) - + log(1 + exp(input_j_k - 2 * input_j_k * (input_j_k >= 0))); + } else { + temp_loss_neg -= input_j_k * (0 - (input_j_k >= 0)) - + log(1 + exp(input_j_k - 2 * input_j_k * (input_j_k >= 0))); + } + }//j + if(count_all!=0) { + loss_pos += temp_loss_pos * (1.0 * count_neg / count_all); + loss_neg += temp_loss_neg * (1.0 * count_pos / count_all); + } + }//k + }//i + top[0]->mutable_cpu_data()[0] = (loss_pos * 1 + loss_neg) / num; +} + +template +void MultiChannelReweightedSigmoidCrossEntropyLossLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + // Get the dimensions + const int count = bottom[0]->count(); + const int num = bottom[0]->num(); + const Dtype* sigmoid_output_data = sigmoid_output_->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + const int data_channels = bottom[0]->channels(); //target is 1-channel, but we treat individual bits as target channels + const int label_channels = bottom[1]->channels();// Target blob is n-channel, where n*32 > data_channel. We treat each float bit of the blob as a target channel. + const int label_channels_use = data_channels / (int)(32) + 1;// Number of effective label channels in use. + // Decode the multi-channel target + const unsigned int ignored_bit = (1 << 31); + Dtype* pNewTarget = new Dtype[count]; + int WxH = count / (num * data_channels); + const int offset_img_ignore = (label_channels - 1) * WxH;// Precompute the offset of the label channel containing ignore bit in each image. + for(int i=0; i(target + offset_ignore + j); + const bool ignored = (*ptr_ignore) & ignored_bit; + if(ignored) { + pNewTarget[offset_input + j] = -100; //ignore label + } else { + const unsigned int* ptr = reinterpret_cast(target + offset_label + j); + pNewTarget[offset_input + j] = (((*ptr) & true_bit) > 0) ? 1 : 0; + } + }//j + }//k + }//i + // Compute the diff + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_sub(count, sigmoid_output_data, pNewTarget, bottom_diff); + // Reweight the diff + for (int i = 0; i < num; ++i) {//each image + // Count class-agnostic edge pixels + Dtype count_pos = 0; + Dtype count_neg = 0; + const int offset_batch_label = i*label_channels*WxH;// Precompute the global offset of each label image. + const int offset_ignore = offset_batch_label + offset_img_ignore; // Precompute the global offset of the label channel containing ignore bit. + for (int j = 0; j < WxH; j ++) { + const unsigned int* ptr_ignore = reinterpret_cast(target + offset_ignore + j); + const bool ignored = (*ptr_ignore) & ignored_bit; + if(ignored) continue; + bool flag_pos = false; + for (int k = 0; k < label_channels_use; ++k){// Channel index + const unsigned int* ptr = reinterpret_cast(target + offset_batch_label + k*WxH + j); + if (*ptr != 0) { + flag_pos = true; + break; + } + } + if (flag_pos) count_pos++; + else count_neg++; + } + const Dtype count_all = count_pos + count_neg; + Dtype weight_pos = 0; + Dtype weight_neg = 0; + if(count_all!=0) { + weight_pos = 1.0 * count_neg / count_all; + weight_neg = 1.0 * count_pos / count_all; + } + // Reweight the diff with class-agnostic edge pixel count + for(int k = 0; k < data_channels; ++k) {//each channel + const int offset = (i*data_channels+k)*WxH; + for (int j = 0; j < WxH; j ++) { + const int pix = offset + j; + const Dtype& label_j_k = pNewTarget[pix]; + if (label_j_k == 1) { + bottom_diff[pix] *= weight_pos; + } else if (label_j_k == 0) { + bottom_diff[pix] *= weight_neg; + } else if (label_j_k == -100) { + bottom_diff[pix] = 0; //pixels with ignore label should not have derivative + } + }//j + }//k + }//i + delete[] pNewTarget; + const Dtype loss_weight = top [0]->cpu_diff()[0]; + caffe_scal(count, loss_weight / num, bottom_diff); + }//propagate_down[0] +} + +#ifdef CPU_ONLY +STUB_GPU_BACKWARD(MultiChannelReweightedSigmoidCrossEntropyLossLayer, Backward); +#endif + +INSTANTIATE_CLASS(MultiChannelReweightedSigmoidCrossEntropyLossLayer); +REGISTER_LAYER_CLASS(MultiChannelReweightedSigmoidCrossEntropyLoss); + +} // namespace caffe diff --git a/caffe/src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp b/caffe/src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp new file mode 100644 index 0000000..60df1e9 --- /dev/null +++ b/caffe/src/caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.cpp @@ -0,0 +1,164 @@ +#include +#include +#include + +#include "caffe/layers/reweighted_sigmoid_cross_entropy_loss_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ReweightedSigmoidCrossEntropyLossLayer::LayerSetUp( + const vector*>& bottom, const vector*>& top) { + LossLayer::LayerSetUp(bottom, top); + + CHECK(bottom[0]->channels()==1) << "Input only support 1 channel for now!"; + CHECK(bottom[1]->channels()==1) << "Label only support 1 channel for now!"; + + sigmoid_bottom_vec_.clear(); + sigmoid_bottom_vec_.push_back(bottom[0]); + sigmoid_top_vec_.clear(); + sigmoid_top_vec_.push_back(sigmoid_output_.get()); + sigmoid_layer_->SetUp(sigmoid_bottom_vec_, sigmoid_top_vec_); +} + +template +void ReweightedSigmoidCrossEntropyLossLayer::Reshape( + const vector*>& bottom, const vector*>& top) { + LossLayer::Reshape(bottom, top); + CHECK_EQ(bottom[0]->width()*bottom[0]->height(), bottom[1]->width()*bottom[1]->height()) << + "SIGMOID_CROSS_ENTROPY_LOSS layer inputs must have the same spatial dimension."; + sigmoid_layer_->Reshape(sigmoid_bottom_vec_, sigmoid_top_vec_); +} + +template +void ReweightedSigmoidCrossEntropyLossLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the sigmoid outputs. + sigmoid_bottom_vec_[0] = bottom[0]; + sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); + // Compute the loss (negative log likelihood) + // Stable version of loss computation from input data + const int num = bottom[0]->num(); + const Dtype* input_data = bottom[0]->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + Dtype loss_pos = 0; + Dtype loss_neg = 0; + Dtype temp_loss_pos = 0; + Dtype temp_loss_neg = 0; + Dtype count_pos = 0; + Dtype count_neg = 0; + const unsigned int ignored_bit = (1 << 31); + int dim = bottom[0]->count() / bottom[0]->num(); + + for (int i = 0; i < num; ++i) { + temp_loss_pos = 0; + temp_loss_neg = 0; + count_pos = 0; + count_neg = 0; + + const int offset = i*dim; + for (int j = 0; j < dim; j ++) { + const unsigned int* ptr = reinterpret_cast(target+offset+j); + const bool ignored = (*ptr) & ignored_bit; + if(ignored) continue; + if ((*ptr) != 0) { + count_pos ++; + temp_loss_pos -= input_data[offset + j] * (1 - (input_data[offset + j] >= 0)) - + log(1 + exp(input_data[offset + j] - 2 * input_data[offset + j] * (input_data[offset + j] >= 0))); + } else if ((*ptr) == 0) { + count_neg ++; + temp_loss_neg -= input_data[offset + j] * (0 - (input_data[offset + j] >= 0)) - + log(1 + exp(input_data[offset + j] - 2 * input_data[offset + j] * (input_data[offset + j] >= 0))); + } + } + Dtype count_all = count_pos + count_neg; + if(count_all!=0) { + loss_pos += temp_loss_pos * (1.0 * count_neg / count_all); + loss_neg += temp_loss_neg * (1.0 * count_pos / count_all); + } else { + LOG(FATAL) << "All pixels ignored!"; + } + } + top[0]->mutable_cpu_data()[0] = (loss_pos * 1 + loss_neg) / num; +} + +template +void ReweightedSigmoidCrossEntropyLossLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[1]) { + LOG(FATAL) << this->type() + << " Layer cannot backpropagate to label inputs."; + } + if (propagate_down[0]) { + // First, compute the diff + const int count = bottom[0]->count(); + const int num = bottom[0]->num(); + const Dtype* sigmoid_output_data = sigmoid_output_->cpu_data(); + const Dtype* target = bottom[1]->cpu_data(); + const unsigned int ignored_bit = (1 << 31); + const int count1 = bottom[1]->count(); + + Dtype* pNewTarget = new Dtype[count1]; + for(int i=0; i(target+i); + const bool ignored = (*ptr) & ignored_bit; + if(ignored) { + pNewTarget[i] = -100; + //LOG(FATAL) << "pixel ignored!"; + } else { + pNewTarget[i] = (int)((*ptr)!=0); + } + } + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_sub(count, sigmoid_output_data, pNewTarget, bottom_diff); + + Dtype count_pos = 0; + Dtype count_neg = 0; + int dim = bottom[0]->count() / bottom[0]->num(); + + for (int i = 0; i < num; ++i) { + count_pos = 0; + count_neg = 0; + const int offset = i*dim; + for (int j = 0; j < dim; j ++) { + if (pNewTarget[offset+j] == 1) { + count_pos ++; + } + else if (pNewTarget[offset+j] == 0) { + count_neg ++; + } + } + const Dtype count_all = count_pos + count_neg; + Dtype weight_pos = 0; + Dtype weight_neg = 0; + if (count_all!=0) { + weight_pos = 1.0 * count_neg / count_all; + weight_neg = 1.0 * count_pos / count_all; + } + for (int j = 0; j < dim; j ++) { + if (pNewTarget[offset+j] == 1) { + bottom_diff[offset+j] *= weight_pos; + } + else if (pNewTarget[offset+j] == 0) { + bottom_diff[offset+j] *= weight_neg; + } else { + bottom_diff[offset+j] = 0; + } + } + } + delete[] pNewTarget; + const Dtype loss_weight = top [0]->cpu_diff()[0]; + caffe_scal(count, loss_weight / num, bottom_diff); + } +} + +#ifdef CPU_ONLY +STUB_GPU_BACKWARD(ReweightedSigmoidCrossEntropyLossLayer, Backward); +#endif + +INSTANTIATE_CLASS(ReweightedSigmoidCrossEntropyLossLayer); +REGISTER_LAYER_CLASS(ReweightedSigmoidCrossEntropyLoss); + +} // namespace caffe diff --git a/caffe/src/caffe/proto/caffe.proto b/caffe/src/caffe/proto/caffe.proto index c96966b..04b80ee 100644 --- a/caffe/src/caffe/proto/caffe.proto +++ b/caffe/src/caffe/proto/caffe.proto @@ -428,6 +428,13 @@ message TransformationParameter { optional bool force_color = 6 [default = false]; // Force the decoded image to have 1 color channels. optional bool force_gray = 7 [default = false]; + // If we want to do data augmentation, Scaling factor for randomly scaling input images + repeated float scale_factors = 8; + // the width for cropped region + optional uint32 crop_width = 9 [default = 0]; + // the height for cropped region + optional uint32 crop_height = 10 [default = 0]; + } // Message that stores parameters shared by loss layers @@ -798,6 +805,20 @@ message ImageDataParameter { optional uint32 new_width = 10 [default = 0]; // Specify if the images are color or gray optional bool is_color = 11 [default = true]; + + // This is the value set for pixels or images where we don't know the label + optional int32 ignore_label = 15 [default = 255]; + enum LabelType { + NONE = 0; + IMAGE = 1; + PIXEL = 2; + PIXELML = 3; //for CASENet + } + optional LabelType label_type = 16 [default = IMAGE]; + optional uint32 num_label_chn = 17 [default = 1]; //num_label_chn := std::ceil(#classes/32.0) + optional uint32 num_edge_chn = 18 [default = 0]; + optional string edge_file_prefix_format = 19; + // DEPRECATED. See TransformationParameter. For data pre-processing, we can do // simple scaling and subtracting the data mean, if provided. Note that the // mean subtraction is always carried out before scaling. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5a17639 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,21 @@ + +# Copyright (c) 2014-2017 The Regents of the University of California (Regents) and the respective contributors +# SPDX-License-Identifier: BSD-2-Clause + +Cython>=0.19.2 +numpy>=1.7.1 +scipy>=0.13.2 +scikit-image>=0.9.3 +matplotlib>=1.3.1 +ipython>=3.0.0 +h5py>=2.2.0 +leveldb>=0.191 +networkx>=1.8.1 +nose>=1.3.0 +pandas>=0.12.0 +python-dateutil>=1.4 #,<2 +protobuf>=2.5.0 +python-gflags>=2.0 +pyyaml>=3.10 +Pillow>=2.3.0 +six>=1.1.0