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