diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c3253ba5..803715e48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,12 +44,22 @@ caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only i caffe_option(USE_SYSTEMTAP "Build for SystemTap" OFF) caffe_option(PERFORMANCE_MONITORING "Build Caffe with PERFORMANCE_MONITORING " OFF) #caffe_option(USE_GITHUB_MKLDNN "Download and use MKL-DNN available on github" OFF) - +caffe_option(CODE_COVERAGE "Build with code coverage instrumentation" OFF) +caffe_option(CO_SIM "Build readonly cpu blob data/diff pycaffe interface" OFF) +caffe_option(USE_MLSL "Build Caffe with Intel(r) Machine Learning Scaling Library for multinode training" ON) + # ---[ Dependencies include(cmake/MKLDNN.cmake) include(cmake/DLCP.cmake) include(cmake/Dependencies.cmake) +if(CODE_COVERAGE) + # code coverage necessary + include(CodeCoverage) + APPEND_CCOV_COMPILER_FLAGS() +endif() +#end code coverage + # ---[ Flags if(UNIX OR APPLE) @@ -81,14 +91,16 @@ if(UNIX OR APPLE) # Same as above, with exception that ICC compilation crashes with -fPIE option, even # though it uses -pie linker option that require -fPIE during compilation. Checksec # shows that it generates correct PIE anyway if only -pie is provided. - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector -wd2196") # Auto enable SGD Fusion if use intel compiler set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SGD_FUSION") endif() # Generic flags. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fno-operator-names -Wformat -Wformat-security -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + if(NOT CODE_COVERAGE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Werror") + endif() # Dot not forward c++11 flag to GPU beucause it is not supported set( CUDA_PROPAGATE_HOST_FLAGS OFF ) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") diff --git a/Makefile b/Makefile index 5e9d16ad5..d67f27d83 100644 --- a/Makefile +++ b/Makefile @@ -387,14 +387,14 @@ endif # Compiler flags ifneq (,$(findstring icpc,$(CXX))) - CXX_HARDENING_FLAGS += -fstack-protector + CXX_HARDENING_FLAGS += -fstack-protector -wd2196 #Enable SGD FUSION if use intel compiler COMMON_FLAGS += -DENABLE_SGD_FUSION else ifneq (,$(findstring clang++,$(CXX))) CXX_HARDENING_FLAGS += -fPIE -fstack-protector else ifneq (,$(findstring g++,$(CXX))) - ifeq ($(shell echo | awk '{ print $(GCCVERSION) >= 4.9 }'), 1) + ifeq ($(shell echo | awk '{print $(GCCVERSION) < 4.9;}'), 0) CXX_HARDENING_FLAGS += -fPIE -fstack-protector-strong #Enable SGD FUSION if gcc version >= 4.9 COMMON_FLAGS += -DENABLE_SGD_FUSION @@ -415,7 +415,7 @@ else endif # Generic flags -CXX_HARDENING_FLAGS += -fPIC -fno-operator-names -Wformat -Wformat-security -Wall +CXX_HARDENING_FLAGS += -fPIC -fno-operator-names -Wformat -Wformat-security -Wall -Werror LINKER_EXEC_HARDENING_FLAGS += -pie # Release-only flag @@ -493,11 +493,26 @@ ifeq ($(DISABLE_BN_FOLDING), 1) COMMON_FLAGS += -DDISABLE_BN_FOLDING endif +# Disable Conv + ReLU fusion +ifeq ($(DISABLE_CONV_RELU_FUSION), 1) + COMMON_FLAGS += -DDISABLE_CONV_RELU_FUSION +endif + +# Disable Bn + ReLU fusion +ifeq ($(DISABLE_BN_RELU_FUSION), 1) + COMMON_FLAGS += -DDISABLE_BN_RELU_FUSION +endif + # Disable the conv/eltwise/relu layer fusion ifeq ($(DISABLE_CONV_SUM_FUSION), 1) COMMON_FLAGS += -DDISABLE_CONV_SUM_FUSION endif +# Disable sparse +ifeq ($(DISABLE_SPARSE), 1) + COMMON_FLAGS += -DDISABLE_SPARSE +endif + # Performance monitoring ifeq ($(PERFORMANCE_MONITORING), 1) CXXFLAGS += -DPERFORMANCE_MONITORING @@ -515,7 +530,9 @@ include Makefile.dlcp BOOST_LDFLAGS += $(foreach boost_lib,$(BOOST_LIBRARIES),-l$(boost_lib)) ifneq ($(origin BOOST_ROOT), undefined) INCLUDE_DIRS += $(BOOST_ROOT) + INCLUDE_DIRS += $(BOOST_ROOT)/include BOOST_LDFLAGS+=-L$(BOOST_ROOT)/stage/lib -Wl,-rpath,$(BOOST_ROOT)/stage/lib + BOOST_LDFLAGS+=-L$(BOOST_ROOT)/lib -Wl,-rpath,$(BOOST_ROOT)/lib endif # BLAS configuration (default = MKL) diff --git a/Makefile.config.example b/Makefile.config.example index ce18c5cd2..25acbe9dc 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -79,11 +79,25 @@ USE_MKLDNN_AS_DEFAULT_ENGINE := 1 # Use remove batch norm optimization to boost inference DISABLE_BN_FOLDING := 0 -#Use conv/eltwise/relu layer fusion to boost inference. +# Use Conv + Relu fusion to boost inference +DISABLE_CONV_RELU_FUSION:= 0 + +# Use Bn + ReLU fusion to boost inference +DISABLE_BN_RELU_FUSION := 0 + +# Use Conv + Eltwise + Relu layer fusion to boost inference. DISABLE_CONV_SUM_FUSION := 0 + +# Use sparse to boost inference. +DISABLE_SPARSE := 0 + +# Intel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN) +# Uncomment to disable MKLDNN download by customized setting +# DISABLE_MKLDNN_DOWNLOAD := 1 + # Intel(r) Machine Learning Scaling Library (uncomment to build # with MLSL for multi-node training) -# USE_MLSL :=1 +USE_MLSL := 1 # CUDA directory contains bin/ and lib/ directories that we need. CUDA_DIR := /usr/local/cuda diff --git a/Makefile.mkldnn b/Makefile.mkldnn index d113a8923..f2dd30053 100644 --- a/Makefile.mkldnn +++ b/Makefile.mkldnn @@ -24,6 +24,17 @@ endif MKLDNN_GITHUB := https://github.com/01org/mkl-dnn.git MKLDNN_CMAKE_FLAGS += $(MKLDNN_SRCDIR) -DCMAKE_INSTALL_PREFIX=$(MKLDNN_INSTALLDIR) -DMKLROOT=${MKL_ROOTDIR} -B$(MKLDNN_BUILDDIR) -DCMAKE_CXX_COMPILER="$(MKLDNN_CXX)" -DCMAKE_C_COMPILER="$(MKLDNN_CC)" +# Disable MKLDNN download by customized setting +ifeq ($(DISABLE_MKLDNN_DOWNLOAD), 1) +disable_mkldnn_download_info: + @echo "MKLDNN download is disabled by customized setting! If MKLDNNROOT is not set in the ENV, may cause compile error in the following steps!" +mkldnn_download: +mkldnn_build: + +else +disable_mkldnn_download_info: + @echo "MKLDNN download is enabled by customized setting!" + ifeq ("$(wildcard $(MKLDNN_INSTALLDIR)/include/mkldnn.hpp)", "") mkldnn_download: git clone --no-checkout $(MKLDNN_GITHUB) $(MKLDNN_TMPDIR) @@ -38,6 +49,7 @@ else mkldnn_download: mkldnn_build: endif +endif mkldnn_clean: @rm -rf $(MKLDNN_SRCDIR) $(MKLDNN_BUILDDIR) $(MKLDNN_INSTALLDIR) $(MKLDNN_TMPDIR) @@ -55,10 +67,14 @@ mkldnnroot_notset: mkldnn_build $(eval MKLDNN_LDFLAGS += -lmkldnn) \ $(eval MKLDNN_LDFLAGS += -L$(MKLDNN_INSTALLDIR)/lib -Wl,-rpath,${MKLDNN_INSTALLDIR}/lib) + + ifneq ($(origin MKLDNNROOT), undefined) ifdef MKLDNNROOT mkldnn: mkldnnroot_set +mkldnn: disable_mkldnn_download_info endif else mkldnn: mkldnnroot_notset +mkldnn: disable_mkldnn_download_info endif diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 732218865..bf8a75803 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -25,6 +25,11 @@ if(PERFORMANCE_MONITORING) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPERFORMANCE_MONITORING") endif() +# ---[ CPU DATA READONLY CO SIM +if(CO_SIM) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCO_SIM") +endif() + # ---[ Google-glog include("cmake/External/glog.cmake") include_directories(SYSTEM ${GLOG_INCLUDE_DIRS}) @@ -191,8 +196,10 @@ if(NOT APPLE) set(MKL_INCLUDE_DIR "${MKL_ROOT_DIR}/include/") if( ${MKL_EXTERNAL} EQUAL 1 ) set(MKL_LIBRARIES "${MKL_ROOT_DIR}/lib/lib${MKL_LIBRARIES}.so") + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MKL_ROOT_DIR}/lib/) else() set(MKL_LIBRARIES "${MKL_ROOT_DIR}/lib/intel64/lib${MKL_LIBRARIES}.so") + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MKL_ROOT_DIR}/lib/intel64/) endif() message(STATUS "Found MKL: ${MKL_INCLUDE_DIR}") message(STATUS "Found MKL (include: ${MKL_INCLUDE_DIR}, lib: ${MKL_LIBRARIES}") @@ -237,6 +244,14 @@ endif() # ---[ MKLDNN if(DEFINED ENV{MKLDNNROOT}) + if(DISABLE_MKLDNN_DOWNLOAD) + message(STATUS "MKLDNN download is disabled by customized setting!") + message(STATUS "MKLDNNROOT is already set in the ENV, will use ENV MKLDNNROOT in the following compile steps!") + add_definitions("-DDISABLE_MKLDNN_DOWNLOAD=1") + else() + message(STATUS "MKLDNN download is enabled by customized setting!") + add_definitions("-DDISABLE_MKLDNN_DOWNLOAD=0") + endif() set(MKLDNNROOT_DIR $ENV{MKLDNNROOT}) if(NOT ${MKLDNNROOT_DIR} STREQUAL "") set(MKLDNNROOT_INCLUDE_DIR "${MKLDNNROOT_DIR}/include/") @@ -249,6 +264,7 @@ if(DEFINED ENV{MKLDNNROOT}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKLDNN_AS_DEFAULT_ENGINE") endif() list(APPEND Caffe_LINKER_LIBS "${MKLDNNROOT_DIR}/lib/libmkldnn.so") + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MKLDNNROOT_DIR}/lib/) include_directories(SYSTEM ${MKLDNNROOT_INCLUDE_DIR}) else() message(STATUS "MKLDNN not found. MKLDNN_INCLUDE_DIR = ${MKLDNNROOT_INCLUDE_DIR}") @@ -259,18 +275,27 @@ if(DEFINED ENV{MKLDNNROOT}) endif() endif() else() - Download_MKLDNN() + if(DISABLE_MKLDNN_DOWNLOAD) + message(STATUS "MKLDNN download is disabled by customized setting!") + message(STATUS "MKLDNNROOT is not set in the ENV, will cause compile error in the following steps!") + add_definitions("-DDISABLE_MKLDNN_DOWNLOAD=1") + else() + message(STATUS "MKLDNN download is enabled by customized setting!") + add_definitions("-DDISABLE_MKLDNN_DOWNLOAD=0") + Download_MKLDNN() - message(STATUS "MKLDNN will be downloaded from github and installed in ${MKLDNN_INSTALL_DIR}") - message(STATUS "MKLDNN include directory: ${MKLDNN_INCLUDE_DIR}") - set(MKLDNN_SUPPORTED ON) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMKLDNN_SUPPORTED -std=c++11") - if(USE_MKLDNN_AS_DEFAULT_ENGINE) - message(STATUS "MKLDNN engine will be used as a default engine") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKLDNN_AS_DEFAULT_ENGINE") + message(STATUS "MKLDNN will be downloaded from github and installed in ${MKLDNN_INSTALL_DIR}") + message(STATUS "MKLDNN include directory: ${MKLDNN_INCLUDE_DIR}") + set(MKLDNN_SUPPORTED ON) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMKLDNN_SUPPORTED -std=c++11") + if(USE_MKLDNN_AS_DEFAULT_ENGINE) + message(STATUS "MKLDNN engine will be used as a default engine") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKLDNN_AS_DEFAULT_ENGINE") + endif() + list(APPEND Caffe_LINKER_LIBS "${MKLDNN_INSTALL_DIR}/lib/libmkldnn.so") + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MKLDNN_INSTALL_DIR}/lib/) + include_directories(${MKLDNN_INCLUDE_DIR}) endif() - list(APPEND Caffe_LINKER_LIBS "${MKLDNN_INSTALL_DIR}/lib/libmkldnn.so") - include_directories(${MKLDNN_INCLUDE_DIR}) endif() # ---[ Python diff --git a/cmake/Misc.cmake b/cmake/Misc.cmake index eaff48f7f..438e4b57b 100644 --- a/cmake/Misc.cmake +++ b/cmake/Misc.cmake @@ -11,11 +11,25 @@ if(DISABLE_BN_FOLDING) add_definitions("-DDISABLE_BN_FOLDING") endif() +if(DISABLE_CONV_RELU_FUSION) + message(STATUS "CONV + ReLU fusion is disabled!") + add_definitions("-DDISABLE_CONV_RELU_FUSION") +endif() + +if(DISABLE_BN_RELU_FUSION) + message(STATUS "Bn + ReLU fusion is disabled!") + add_definitions("-DDISABLE_BN_RELU_FUSION") +endif() + if(DISABLE_CONV_SUM_FUSION) message(STATUS "conv/eltwise/relu fusion is disabled!") add_definitions("-DDISABLE_CONV_SUM_FUSION") endif() +if(DISABLE_SPARSE) + message(STATUS "sparse is disabled!") + add_definitions("-DDISABLE_SPARSE") +endif() # --[ If user doesn't specify build type then assume release if("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE Release) diff --git a/cmake/Modules/CodeCoverage.cmake b/cmake/Modules/CodeCoverage.cmake new file mode 100644 index 000000000..ad70d4df9 --- /dev/null +++ b/cmake/Modules/CodeCoverage.cmake @@ -0,0 +1,19 @@ +include(CMakeParseArguments) + +find_program( GCOV gcov ) +if(NOT GCOV) + message(FATAL_ERROR "command gcov not found!") +endif() + +set(CCOV_COMPILER_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage" + CACHE INTERNAL "") + +if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + message(WARNING "Non debug build may lead to wrong code coverage result.") +endif() + +function(APPEND_CCOV_COMPILER_FLAGS) + set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${CCOV_COMPILER_FLAGS}" PARENT_SCOPE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CCOV_COMPILER_FLAGS}" PARENT_SCOPE) + message(STATUS "Setting code coverage compiler flags: ${CCOV_COMPILER_FLAGS}") +endfunction() diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index ec25efac2..787d7f722 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -121,6 +121,7 @@ function(caffe_print_configuration_summary) caffe_status(" ALLOW_LMDB_NOLOCK : ${ALLOW_LMDB_NOLOCK}") caffe_status(" USE_SYSTEMTAP : ${USE_SYSTEMTAP}") caffe_status(" PERFORMANCE_MONITORING : ${PERFORMANCE_MONITORING}") + caffe_status(" CO_SIM : ${CO_SIM}") caffe_status("") caffe_status("Dependencies:") caffe_status(" BLAS : " APPLE THEN "Yes (vecLib)" ELSE "Yes (${BLAS})") diff --git a/docker/standalone/cpu-ubuntu/Dockerfile b/docker/standalone/cpu-ubuntu/Dockerfile index ae5fcb284..4418f133e 100644 --- a/docker/standalone/cpu-ubuntu/Dockerfile +++ b/docker/standalone/cpu-ubuntu/Dockerfile @@ -5,11 +5,22 @@ MAINTAINER caffe-maint@googlegroups.com #ENV https_proxy proxy:port RUN apt-get update && apt-get install -y --no-install-recommends \ + cpio \ build-essential \ cmake \ git \ wget \ ssh \ + openssh-server \ + numactl \ + vim \ + net-tools \ + iputils-ping \ + screen \ + libmlx4-1 libmlx5-1 ibutils rdmacm-utils libibverbs1 ibverbs-utils perftest infiniband-diags \ + openmpi-bin libopenmpi-dev \ + ufw \ + iptables \ libboost-all-dev \ libgflags-dev \ libgoogle-glog-dev \ @@ -38,7 +49,7 @@ RUN pip install --upgrade pip RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/intel/caffe.git . && \ for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ mkdir build && cd build && \ - cmake -DCPU_ONLY=1 -DCMAKE_BUILD_TYPE=Release .. && \ + cmake -DCPU_ONLY=1 -DUSE_MLSL=1 -DCMAKE_BUILD_TYPE=Release .. && \ make all -j"$(nproc)" ENV PYCAFFE_ROOT $CAFFE_ROOT/python @@ -46,4 +57,19 @@ ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig -WORKDIR /workspace +WORKDIR /opt/caffe + +RUN mkdir /var/run/sshd +RUN echo 'root:123456' | chpasswd +RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config +RUN sed -i 's/Port 22/Port 10010/' /etc/ssh/sshd_config + +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd + +ENV NOTVISIBLE "in users profile" +RUN echo "export VISIBLE=now" >> /etc/profile + +EXPOSE 10010 + +CMD ["/usr/sbin/sshd", "-D"] diff --git a/examples/rfcn/README.md b/examples/rfcn/README.md new file mode 100644 index 000000000..b93327ebf --- /dev/null +++ b/examples/rfcn/README.md @@ -0,0 +1,238 @@ +# R-FCN +R-FCN: Object Detection via Region-based Fully Convolutional Networks + +This is the cpu-only version of RFCN. + +### Disclaimer + +The official R-FCN code (written in MATLAB) is available [here](https://github.com/daijifeng001/R-FCN). + +R-FCN is modified from [the offcial py-R-FCN implementation](https://github.com/YuwenXiong/py-R-FCN), [the offcial R-FCN implementation](https://github.com/daijifeng001/R-FCN) and [py-faster-rcnn code](https://github.com/rbgirshick/py-faster-rcnn ), and the usage is quite similar to [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn ). + +There are slight differences between py-R-FCN and the official R-FCN implementation. + - py-R-FCN is ~10% slower at test-time, because some operations execute on the CPU in Python layers (e.g., 90ms / image vs. 99ms / image for ResNet-50) + - py-R-FCN supports both join training and alternative optimization of R-FCN. + +#### Some modification + +The original py-faster-rcnn uses class-aware bounding box regression. However, R-FCN use class-agnostic bounding box regression to reduce model complexity. So I add a configuration AGNOSTIC into fast_rcnn/config.py, and the default value is False. You should set it to True both on train and test phase if you want to use class-agnostic training and test. + +OHEM need all rois to select the hard examples, so I changed the sample strategy, set `BATCH_SIZE: -1` for OHEM, otherwise OHEM would not take effect. + +In conclusion: + +`AGNOSTIC: True` is required for class-agnostic bounding box regression + +`BATCH_SIZE: -1` is required for OHEM + +And I've already provided two configuration files for you(w/ OHEM and w/o OHEM) under `experiments/cfgs` folder, you could just use them and needn't change anything. + +### License + +R-FCN is released under the MIT License (refer to the LICENSE file for details). + +### Citing R-FCN + +If you find R-FCN useful in your research, please consider citing: + + @article{dai16rfcn, + Author = {Jifeng Dai, Yi Li, Kaiming He, Jian Sun}, + Title = {{R-FCN}: Object Detection via Region-based Fully Convolutional Networks}, + Journal = {arXiv preprint arXiv:1605.06409}, + Year = {2016} + } + +### Main Results + +#### joint training + +| | training data | test data | mAP@0.5 | time/img (Titian X)| +|-------------------|:-------------------:|:---------------------:|:-----:|:------------------:| +|R-FCN, ResNet-50 | VOC 07+12 trainval | VOC 07 test | 77.6% | 0.099sec| +|R-FCN, ResNet-101 | VOC 07+12 trainval | VOC 07 test | 79.4% | 0.136sec| + +| | training data | test data | mAP@[0.5:0.95] | time/img (Titian X)| +|-------------------|:-------------------:|:---------------------:|:-----:|:------------------:| +|R-FCN, ResNet-101 | COCO 2014 train | COCO 2014 val | 27.9% | 0.138sec | + +#### alternative optimization + +| | training data | test data | mAP@0.5 | time/img (Titian X)| +|-------------------|:-------------------:|:---------------------:|:-----:|:------------------:| +|R-FCN, ResNet-50 | VOC 07+12 trainval | VOC 07 test | 77.4%| 0.099sec | +|R-FCN, ResNet-101 | VOC 07+12 trainval | VOC 07 test | 79.4%| 0.136sec | + + +[VOC 0712 model (trained on VOC07+12 trainval) of R-FCN](https://1drv.ms/u/s!AoN7vygOjLIQqUWHpY67oaC7mopf) + +[COCO model (trained on 2014 train) of R-FCN](https://1drv.ms/u/s!AoN7vygOjLIQqiZEmKSodg7UudD4) + + +### Requirements: software + +0. **`Important`** Please use the [Microsoft-version Caffe(@commit 1a2be8e)](https://github.com/Microsoft/caffe/tree/1a2be8ecf9ba318d516d79187845e90ac6e73197), this Caffe supports R-FCN layer, and the prototxt in this repository follows the Microsoft-version Caffe's layer name. You need to put the Caffe root folder under py-R-FCN folder, just like what py-faster-rcnn does. + +1. Requirements for `Caffe` and `pycaffe` (see: [Caffe installation instructions](http://caffe.berkeleyvision.org/installation.html)) + + **Note:** Caffe *must* be built with support for Python layers! + + ```make + # In your Makefile.config, make sure to have this line uncommented + WITH_PYTHON_LAYER := 1 + # Unrelatedly, it's also recommended that you use CUDNN + USE_CUDNN := 1 + ``` +2. Python packages you might not have: `cython`, `opencv-python`, `easydict` +3. [Optional] MATLAB is required for **official** PASCAL VOC evaluation only. The code now includes unofficial Python evaluation code. + +### Requirements: hardware + +Any NVIDIA GPU with 6GB or larger memory is OK(4GB is enough for ResNet-50). + + +### Installation +1. Clone the R-FCN repository + ```Shell + git clone https://github.com/Orpine/py-R-FCN.git + ``` + We'll call the directory that you cloned R-FCN into `RFCN_ROOT` + +2. Clone the Caffe repository + ```Shell + cd $RFCN_ROOT + git clone https://github.com/Microsoft/caffe.git + ``` + [optional] + ```Shell + cd caffe + git reset --hard 1a2be8e + ``` + (I only test on this commit, and I'm not sure whether this Caffe is still compatible with the prototxt in this repository in the future) + + If you followed the above instruction, python code will add `$RFCN_ROOT/caffe/python` to `PYTHONPATH` automatically, otherwise you need to add `$CAFFE_ROOT/python` by your own, you could check `$RFCN_ROOT/tools/_init_paths.py` for more details. + +3. Build the Cython modules + ```Shell + cd $RFCN_ROOT/lib + make + ``` + +4. Build Caffe and pycaffe + ```Shell + cd $RFCN_ROOT/caffe + # Now follow the Caffe installation instructions here: + # http://caffe.berkeleyvision.org/installation.html + + # If you're experienced with Caffe and have all of the requirements installed + # and your Makefile.config in place, then simply do: + make -j8 && make pycaffe + ``` + +### Demo +1. To use demo you need to download the pretrained R-FCN model, please download the model manually from [OneDrive](https://1drv.ms/u/s!AoN7vygOjLIQqUWHpY67oaC7mopf), and put it under `$RFCN/data`. + + Make sure it looks like this: + ```Shell + $RFCN/data/rfcn_models/resnet50_rfcn_final.caffemodel + $RFCN/data/rfcn_models/resnet101_rfcn_final.caffemodel + ``` + +2. To run the demo + + ```Shell + $RFCN/tools/demo_rfcn.py + ``` + + The demo performs detection using a ResNet-101 network trained for detection on PASCAL VOC 2007. + + +### Preparation for Training & Testing + +1. Download the training, validation, test data and VOCdevkit + + ```Shell + wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar + wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar + wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar + wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar + ``` + +2. Extract all of these tars into one directory named `VOCdevkit` + + ```Shell + tar xvf VOCtrainval_06-Nov-2007.tar + tar xvf VOCtest_06-Nov-2007.tar + tar xvf VOCdevkit_08-Jun-2007.tar + tar xvf VOCtrainval_11-May-2012.tar + ``` + +3. It should have this basic structure + + ```Shell + $VOCdevkit/ # development kit + $VOCdevkit/VOCcode/ # VOC utility code + $VOCdevkit/VOC2007 # image sets, annotations, etc. + $VOCdevkit/VOC2012 # image sets, annotations, etc. + # ... and several other directories ... + ``` + +4. Since py-faster-rcnn does not support multiple training datasets, we need to merge VOC 2007 data and VOC 2012 data manually. Just make a new directory named `VOC0712`, put all subfolders except `ImageSets` in `VOC2007` and `VOC2012` into `VOC0712`(you'll merge some folders). I provide a merged-version `ImageSets` folder for you, please put it into `VOCdevkit/VOC0712/`. + +5. Then the folder structure should look like this + ```Shell + $VOCdevkit/ # development kit + $VOCdevkit/VOCcode/ # VOC utility code + $VOCdevkit/VOC2007 # image sets, annotations, etc. + $VOCdevkit/VOC2012 # image sets, annotations, etc. + $VOCdevkit/VOC0712 # you just created this folder + # ... and several other directories ... + ``` + +4. Create symlinks for the PASCAL VOC dataset + + ```Shell + cd $RFCN_ROOT/data + ln -s $VOCdevkit VOCdevkit0712 + ``` + +5. Please download ImageNet-pre-trained ResNet-50 and ResNet-100 model manually, and put them into `$RFCN_ROOT/data/imagenet_models` +8. Then everything is done, you could train your own model. + +### Usage + +To train and test a R-FCN detector using the **approximate joint training** method, use `experiments/scripts/rfcn_end2end.sh`. +Output is written underneath `$RFCN_ROOT/output`. + +To train and test a R-FCN detector using the **approximate joint training** method **with OHEM**, use `experiments/scripts/rfcn_end2end_ohem.sh`. +Output is written underneath `$RFCN_ROOT/output`. + +To train and test a R-FCN detector using the **alternative optimization** method **with OHEM**, use `experiments/scripts/rfcn_alt_opt_5stage_ohem.sh`. +Output is written underneath `$RFCN_ROOT/output` + +```Shell +cd $RFCN_ROOT +./experiments/scripts/rfcn_end2end[_ohem].sh [GPU_ID] [NET] [DATASET] [--set ...] +# GPU_ID is the GPU you want to train on +# NET in {ResNet-50, ResNet-101} is the network arch to use +# DATASET in {pascal_voc, coco} is the dataset to use(I only tested on pascal_voc) +# --set ... allows you to specify fast_rcnn.config options, e.g. +# --set EXP_DIR seed_rng1701 RNG_SEED 1701 +``` + +Trained R-FCN networks are saved under: + +``` +output/// +``` + +Test outputs are saved under: + +``` +output//// +``` + +### Misc + +Tested on Ubuntu 14.04 with a Titan X / GTX1080 GPU and Intel Xeon CPU E5-2620 v2 @ 2.10GHz + +py-faster-rcnn code can also work properly, but I do not add any other feature(such as ResNet and OHEM). \ No newline at end of file diff --git a/examples/rfcn/data/README.md b/examples/rfcn/data/README.md new file mode 100644 index 000000000..2f01d3d71 --- /dev/null +++ b/examples/rfcn/data/README.md @@ -0,0 +1,69 @@ +This directory holds (*after you download them*): +- Caffe models pre-trained on ImageNet +- Faster R-CNN models +- Symlinks to datasets + +To download Caffe models (ZF, VGG16) pre-trained on ImageNet, run: + +``` +./data/scripts/fetch_imagenet_models.sh +``` + +This script will populate `data/imagenet_models`. + +To download Faster R-CNN models trained on VOC 2007, run: + +``` +./data/scripts/fetch_faster_rcnn_models.sh +``` + +This script will populate `data/faster_rcnn_models`. + +In order to train and test with PASCAL VOC, you will need to establish symlinks. +From the `data` directory (`cd data`): + +``` +# For VOC 2007 +ln -s /your/path/to/VOC2007/VOCdevkit VOCdevkit2007 + +# For VOC 2012 +ln -s /your/path/to/VOC2012/VOCdevkit VOCdevkit2012 +``` + +Install the MS COCO dataset at /path/to/coco + +``` +ln -s /path/to/coco coco +``` + +For COCO with Fast R-CNN, place object proposals under `coco_proposals` (inside +the `data` directory). You can obtain proposals on COCO from Jan Hosang at +https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/object-recognition-and-scene-understanding/how-good-are-detection-proposals-really/. +For COCO, using MCG is recommended over selective search. MCG boxes can be downloaded +from http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/mcg/. +Use the tool `lib/datasets/tools/mcg_munge.py` to convert the downloaded MCG data +into the same file layout as those from Jan Hosang. + +Since you'll likely be experimenting with multiple installs of Fast/er R-CNN in +parallel, you'll probably want to keep all of this data in a shared place and +use symlinks. On my system I create the following symlinks inside `data`: + +Annotations for the 5k image 'minival' subset of COCO val2014 that I like to use +can be found at https://dl.dropboxusercontent.com/s/o43o90bna78omob/instances_minival2014.json.zip?dl=0. +Annotations for COCO val2014 (set) minus minival (~35k images) can be found at +https://dl.dropboxusercontent.com/s/s3tw5zcg7395368/instances_valminusminival2014.json.zip?dl=0. + +``` +# data/cache holds various outputs created by the datasets package +ln -s /data/fast_rcnn_shared/cache + +# move the imagenet_models to shared location and symlink to them +ln -s /data/fast_rcnn_shared/imagenet_models + +# move the selective search data to a shared location and symlink to them +# (only applicable to Fast R-CNN training) +ln -s /data/fast_rcnn_shared/selective_search_data + +ln -s /data/VOC2007/VOCdevkit VOCdevkit2007 +ln -s /data/VOC2012/VOCdevkit VOCdevkit2012 +``` diff --git a/examples/rfcn/data/demo/000456.jpg b/examples/rfcn/data/demo/000456.jpg new file mode 100644 index 000000000..480afa5d5 Binary files /dev/null and b/examples/rfcn/data/demo/000456.jpg differ diff --git a/examples/rfcn/data/demo/000542.jpg b/examples/rfcn/data/demo/000542.jpg new file mode 100644 index 000000000..d87e91929 Binary files /dev/null and b/examples/rfcn/data/demo/000542.jpg differ diff --git a/examples/rfcn/data/demo/001150.jpg b/examples/rfcn/data/demo/001150.jpg new file mode 100644 index 000000000..e8c86a499 Binary files /dev/null and b/examples/rfcn/data/demo/001150.jpg differ diff --git a/examples/rfcn/data/demo/001763.jpg b/examples/rfcn/data/demo/001763.jpg new file mode 100644 index 000000000..c80ebd9b0 Binary files /dev/null and b/examples/rfcn/data/demo/001763.jpg differ diff --git a/examples/rfcn/data/demo/004545.jpg b/examples/rfcn/data/demo/004545.jpg new file mode 100644 index 000000000..4e06c202b Binary files /dev/null and b/examples/rfcn/data/demo/004545.jpg differ diff --git a/examples/rfcn/data/scripts/fetch_faster_rcnn_models.sh b/examples/rfcn/data/scripts/fetch_faster_rcnn_models.sh new file mode 100644 index 000000000..9b76fd56d --- /dev/null +++ b/examples/rfcn/data/scripts/fetch_faster_rcnn_models.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" +cd $DIR + +FILE=faster_rcnn_models.tgz +URL=https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0 +CHECKSUM=ac116844f66aefe29587214272054668 + +if [ -f $FILE ]; then + echo "File already exists. Checking md5..." + os=`uname -s` + if [ "$os" = "Linux" ]; then + checksum=`md5sum $FILE | awk '{ print $1 }'` + elif [ "$os" = "Darwin" ]; then + checksum=`cat $FILE | md5` + fi + if [ "$checksum" = "$CHECKSUM" ]; then + echo "Checksum is correct. No need to download." + exit 0 + else + echo "Checksum is incorrect. Need to download again." + fi +fi + +echo "Downloading Faster R-CNN demo models (695M)..." + +wget $URL -O $FILE + +echo "Unzipping..." + +tar zxvf $FILE + +echo "Done. Please run this command again to verify that checksum = $CHECKSUM." diff --git a/examples/rfcn/data/scripts/fetch_imagenet_models.sh b/examples/rfcn/data/scripts/fetch_imagenet_models.sh new file mode 100644 index 000000000..46835b9fb --- /dev/null +++ b/examples/rfcn/data/scripts/fetch_imagenet_models.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" +cd $DIR + +FILE=imagenet_models.tgz +URL=https://dl.dropbox.com/s/gstw7122padlf0l/imagenet_models.tgz?dl=0 +CHECKSUM=ed34ca912d6782edfb673a8c3a0bda6d + +if [ -f $FILE ]; then + echo "File already exists. Checking md5..." + os=`uname -s` + if [ "$os" = "Linux" ]; then + checksum=`md5sum $FILE | awk '{ print $1 }'` + elif [ "$os" = "Darwin" ]; then + checksum=`cat $FILE | md5` + fi + if [ "$checksum" = "$CHECKSUM" ]; then + echo "Checksum is correct. No need to download." + exit 0 + else + echo "Checksum is incorrect. Need to download again." + fi +fi + +echo "Downloading pretrained ImageNet models (1G)..." + +wget $URL -O $FILE + +echo "Unzipping..." + +tar zxvf $FILE + +echo "Done. Please run this command again to verify that checksum = $CHECKSUM." diff --git a/examples/rfcn/data/scripts/fetch_selective_search_data.sh b/examples/rfcn/data/scripts/fetch_selective_search_data.sh new file mode 100644 index 000000000..bf925fc5b --- /dev/null +++ b/examples/rfcn/data/scripts/fetch_selective_search_data.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" +cd $DIR + +FILE=selective_search_data.tgz +URL=https://dl.dropboxusercontent.com/s/orrt7o6bp6ae0tc/selective_search_data.tgz?dl=0 +CHECKSUM=7078c1db87a7851b31966b96774cd9b9 + +if [ -f $FILE ]; then + echo "File already exists. Checking md5..." + os=`uname -s` + if [ "$os" = "Linux" ]; then + checksum=`md5sum $FILE | awk '{ print $1 }'` + elif [ "$os" = "Darwin" ]; then + checksum=`cat $FILE | md5` + fi + if [ "$checksum" = "$CHECKSUM" ]; then + echo "Checksum is correct. No need to download." + exit 0 + else + echo "Checksum is incorrect. Need to download again." + fi +fi + +echo "Downloading precomputed selective search boxes (0.5G)..." + +wget $URL -O $FILE + +echo "Unzipping..." + +tar zxvf $FILE + +echo "Done. Please run this command again to verify that checksum = $CHECKSUM." diff --git a/examples/rfcn/experiments/README.md b/examples/rfcn/experiments/README.md new file mode 100644 index 000000000..076257dac --- /dev/null +++ b/examples/rfcn/experiments/README.md @@ -0,0 +1,5 @@ +Scripts are under `experiments/scripts`. + +Each script saves a log file under `experiments/logs`. + +Configuration override files used in the experiments are stored in `experiments/cfgs`. diff --git a/examples/rfcn/experiments/cfgs/faster_rcnn_alt_opt.yml b/examples/rfcn/experiments/cfgs/faster_rcnn_alt_opt.yml new file mode 100644 index 000000000..9f11bd60d --- /dev/null +++ b/examples/rfcn/experiments/cfgs/faster_rcnn_alt_opt.yml @@ -0,0 +1,5 @@ +EXP_DIR: faster_rcnn_alt_opt +TRAIN: + BG_THRESH_LO: 0.0 +TEST: + HAS_RPN: True diff --git a/examples/rfcn/experiments/cfgs/faster_rcnn_end2end.yml b/examples/rfcn/experiments/cfgs/faster_rcnn_end2end.yml new file mode 100644 index 000000000..4c6a0545d --- /dev/null +++ b/examples/rfcn/experiments/cfgs/faster_rcnn_end2end.yml @@ -0,0 +1,11 @@ +EXP_DIR: faster_rcnn_end2end +TRAIN: + HAS_RPN: True + IMS_PER_BATCH: 1 + BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True + RPN_POSITIVE_OVERLAP: 0.7 + RPN_BATCHSIZE: 256 + PROPOSAL_METHOD: gt + BG_THRESH_LO: 0.0 +TEST: + HAS_RPN: True diff --git a/examples/rfcn/experiments/cfgs/rfcn_alt_opt_5step_ohem.yml b/examples/rfcn/experiments/cfgs/rfcn_alt_opt_5step_ohem.yml new file mode 100644 index 000000000..9e96f35bd --- /dev/null +++ b/examples/rfcn/experiments/cfgs/rfcn_alt_opt_5step_ohem.yml @@ -0,0 +1,12 @@ +EXP_DIR: rfcn_alt_opt_5step_ohem +TRAIN: + BG_THRESH_LO: 0.0 + RPN_PRE_NMS_TOP_N: 6000 + RPN_POST_NMS_TOP_N: 300 + AGNOSTIC: True + BATCH_SIZE: -1 + RPN_NORMALIZE_TARGETS: True +TEST: + PROPOSAL_METHOD: 'rpn' + HAS_RPN: False + AGNOSTIC: True diff --git a/examples/rfcn/experiments/cfgs/rfcn_end2end.yml b/examples/rfcn/experiments/cfgs/rfcn_end2end.yml new file mode 100644 index 000000000..992ae3c9f --- /dev/null +++ b/examples/rfcn/experiments/cfgs/rfcn_end2end.yml @@ -0,0 +1,17 @@ +EXP_DIR: rfcn_end2end +TRAIN: + HAS_RPN: True + IMS_PER_BATCH: 1 + BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True + RPN_POSITIVE_OVERLAP: 0.7 + RPN_BATCHSIZE: 256 + PROPOSAL_METHOD: gt + BG_THRESH_LO: 0.1 + BATCH_SIZE: 128 + AGNOSTIC: True + SNAPSHOT_ITERS: 10000 + RPN_PRE_NMS_TOP_N: 6000 + RPN_POST_NMS_TOP_N: 300 +TEST: + HAS_RPN: True + AGNOSTIC: True diff --git a/examples/rfcn/experiments/cfgs/rfcn_end2end_ohem.yml b/examples/rfcn/experiments/cfgs/rfcn_end2end_ohem.yml new file mode 100644 index 000000000..240561e92 --- /dev/null +++ b/examples/rfcn/experiments/cfgs/rfcn_end2end_ohem.yml @@ -0,0 +1,18 @@ +EXP_DIR: rfcn_end2end_ohem +TRAIN: + HAS_RPN: True + IMS_PER_BATCH: 1 + BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True + RPN_POSITIVE_OVERLAP: 0.7 + RPN_NORMALIZE_TARGETS: True + RPN_BATCHSIZE: 256 + PROPOSAL_METHOD: gt + BG_THRESH_LO: 0.0 + BATCH_SIZE: -1 + AGNOSTIC: True + SNAPSHOT_ITERS: 10000 + RPN_PRE_NMS_TOP_N: 6000 + RPN_POST_NMS_TOP_N: 300 +TEST: + HAS_RPN: True + AGNOSTIC: True diff --git a/examples/rfcn/experiments/scripts/rfcn_alt_opt_5stage_ohem.sh b/examples/rfcn/experiments/scripts/rfcn_alt_opt_5stage_ohem.sh new file mode 100755 index 000000000..f9ee0ea1e --- /dev/null +++ b/examples/rfcn/experiments/scripts/rfcn_alt_opt_5stage_ohem.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Usage: +# ./experiments/scripts/faster_rcnn_alt_opt.sh GPU NET DATASET [options args to {train,test}_net.py] +# DATASET is only pascal_voc for now +# +# Example: +# ./experiments/scripts/faster_rcnn_alt_opt.sh 0 VGG_CNN_M_1024 pascal_voc \ +# --set EXP_DIR foobar RNG_SEED 42 TRAIN.SCALES "[400, 500, 600, 700]" + +set -x +set -e + +export PYTHONUNBUFFERED="True" + +GPU_ID=$1 +NET=$2 +NET_lc=${NET,,} +DATASET=$3 + +array=( $@ ) +len=${#array[@]} +EXTRA_ARGS=${array[@]:3:$len} +EXTRA_ARGS_SLUG=${EXTRA_ARGS// /_} + +case $DATASET in + pascal_voc) + TRAIN_IMDB="voc_0712_trainval" + TEST_IMDB="voc_0712_test" + PT_DIR="pascal_voc" + ;; + coco) + TRAIN_IMDB="coco_2014_train" + TEST_IMDB="coco_2014_val" + PT_DIR="coco" + ITERS=40000 + ;; + *) + echo "No dataset given" + exit + ;; +esac + +LOG="experiments/logs/rfcn_alt_opt_5step_ohem_rpn4_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`" +if [[ ! -e "experiments/logs" ]]; then + mkdir experiments/logs +fi +exec &> >(tee -a "$LOG") +echo Logging output to "$LOG" + +time ./tools/train_rfcn_alt_opt_5stage.py --gpu ${GPU_ID} \ + --net_name ${NET} \ + --weights data/imagenet_models/${NET}-model.caffemodel \ + --imdb ${TRAIN_IMDB} \ + --imdb_test ${TEST_IMDB} \ + --cfg experiments/cfgs/rfcn_alt_opt_5step_ohem.yml \ + --model 'rfcn_alt_opt_5step_ohem' + ${EXTRA_ARGS} + +set +x +NET_FINAL=`grep "Final model" ${LOG} | awk '{print $3}'` +RPN_FINAL=`grep "Final RPN" ${LOG} | awk '{print $3}'` +set -x +time ./tools/test_net.py --gpu ${GPU_ID} \ + --def models/${PT_DIR}/${NET}/rfcn_alt_opt_5step_ohem/rfcn_test.pt \ + --net ${NET_FINAL} \ + --imdb ${TEST_IMDB} \ + --rpn_file ${RPN_FINAL} \ + --cfg experiments/cfgs/rfcn_alt_opt_5step_ohem.yml \ + --num_dets 400 + ${EXTRA_ARGS} diff --git a/examples/rfcn/experiments/scripts/rfcn_end2end.sh b/examples/rfcn/experiments/scripts/rfcn_end2end.sh new file mode 100755 index 000000000..85070ebe7 --- /dev/null +++ b/examples/rfcn/experiments/scripts/rfcn_end2end.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# Usage: +# ./experiments/scripts/rfcn_end2end.sh GPU NET DATASET [options args to {train,test}_net.py] +# DATASET is either pascal_voc or coco. +# +# Example: +# ./experiments/scripts/rfcn_end2end.sh 0 ResNet50 pascal_voc \ +# --set EXP_DIR foobar RNG_SEED 42 TRAIN.SCALES "[400, 500, 600, 700]" + +set -x +set -e + +export PYTHONUNBUFFERED="True" + +# GPU_ID=$1 +NET=$2 +NET_lc=${NET,,} +DATASET=$3 + +array=( $@ ) +len=${#array[@]} +EXTRA_ARGS=${array[@]:3:$len} +EXTRA_ARGS_SLUG=${EXTRA_ARGS// /_} + +case $DATASET in + pascal_voc) + TRAIN_IMDB="voc_0712_trainval" + TEST_IMDB="voc_0712_test" + PT_DIR="pascal_voc" + ITERS=110000 + ;; + coco) + # This is a very long and slow training schedule + # You can probably use fewer iterations and reduce the + # time to the LR drop (set in the solver to 350,000 iterations). + TRAIN_IMDB="coco_2014_train" + TEST_IMDB="coco_2014_val" + PT_DIR="coco" + ITERS=960000 + ;; + luna) + # This is a very long and slow training schedule + # You can probably use fewer iterations and reduce the + # time to the LR drop (set in the solver to 350,000 iterations). + TRAIN_IMDB="luna_2016_train" + TEST_IMDB="luna_2016_val" + PT_DIR="luna" + ITERS=960000 + ;; + *) + echo "No dataset given" + exit + ;; +esac + +LOG="experiments/logs/rfcn_end2end_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`" + +if [[ ! -e "experiments/logs" ]]; then + mkdir experiments/logs +fi + +exec &> >(tee -a "$LOG") +echo Logging output to "$LOG" + +time ./tools/train_net.py \ + --solver ../../models/intel_optimized_models/rfcn/${PT_DIR}/${NET}/rfcn_end2end/solver.prototxt \ + --imdb ${TRAIN_IMDB} \ + --weights data/imagenet_models/${NET}-model.caffemodel \ + --iters ${ITERS} \ + --cfg experiments/cfgs/rfcn_end2end.yml \ + ${EXTRA_ARGS} + +set +x +NET_FINAL=`grep -B 1 "done solving" ${LOG} | grep "Wrote snapshot" | awk '{print $4}'` +set -x + +time ./tools/test_net.py \ + --def ../../models/intel_optimized_models/rfcn/${PT_DIR}/${NET}/rfcn_end2end/test_agnostic.prototxt \ + --net ${NET_FINAL} \ + --imdb ${TEST_IMDB} \ + --cfg experiments/cfgs/rfcn_end2end.yml \ + ${EXTRA_ARGS} diff --git a/examples/rfcn/experiments/scripts/rfcn_end2end_ohem.sh b/examples/rfcn/experiments/scripts/rfcn_end2end_ohem.sh new file mode 100755 index 000000000..df20e5f79 --- /dev/null +++ b/examples/rfcn/experiments/scripts/rfcn_end2end_ohem.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# Usage: +# ./experiments/scripts/rfcn_end2end_ohem.sh GPU NET DATASET [options args to {train,test}_net.py] +# DATASET is either pascal_voc or coco. +# +# Example: +# ./experiments/scripts/rfcn_end2end_ohem.sh 0 ResNet50 pascal_voc \ +# --set EXP_DIR foobar RNG_SEED 42 TRAIN.SCALES "[400, 500, 600, 700]" + +set -x +set -e + +export PYTHONUNBUFFERED="True" + +# GPU_ID=$1 +NET=$2 +NET_lc=${NET,,} +DATASET=$3 + +array=( $@ ) +len=${#array[@]} +EXTRA_ARGS=${array[@]:3:$len} +EXTRA_ARGS_SLUG=${EXTRA_ARGS// /_} + +case $DATASET in + pascal_voc) + TRAIN_IMDB="voc_0712_trainval" + TEST_IMDB="voc_0712_test" + PT_DIR="pascal_voc" + ITERS=110000 + ;; + coco) + # This is a very long and slow training schedule + # You can probably use fewer iterations and reduce the + # time to the LR drop (set in the solver to 350,000 iterations). + TRAIN_IMDB="coco_2014_train" + TEST_IMDB="coco_2014_val" + PT_DIR="coco" + ITERS=960000 + ;; + *) + echo "No dataset given" + exit + ;; +esac + +LOG="experiments/logs/rfcn_end2end_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`" + +if [[ ! -e "experiments/logs" ]]; then + mkdir experiments/logs +fi + +exec &> >(tee -a "$LOG") +echo Logging output to "$LOG" + + +time ./tools/train_net.py \ + --solver ../../models/intel_optimized_models/faster-rcnn/${PT_DIR}/${NET}/rfcn_end2end/solver_ohem.prototxt \ + --weights data/imagenet_models/${NET}-model.caffemodel \ + --imdb ${TRAIN_IMDB} \ + --iters ${ITERS} \ + --cfg experiments/cfgs/rfcn_end2end_ohem.yml \ + ${EXTRA_ARGS} + + +set +x +NET_FINAL=`tail -n 100 ${LOG} | grep -B 1 "done solving" | grep "Wrote snapshot" | awk '{print $4}'` +set -x + +time ./tools/test_net.py --gpu ${GPU_ID} \ + --def ../../models/intel_optimized_models/faster-rcnn/${PT_DIR}/${NET}/rfcn_end2end/test_agnostic.prototxt \ + --net ${NET_FINAL} \ + --imdb ${TEST_IMDB} \ + --cfg experiments/cfgs/rfcn_end2end_ohem.yml \ + ${EXTRA_ARGS} diff --git a/examples/rfcn/lib/Makefile b/examples/rfcn/lib/Makefile new file mode 100644 index 000000000..a48239850 --- /dev/null +++ b/examples/rfcn/lib/Makefile @@ -0,0 +1,3 @@ +all: + python setup.py build_ext --inplace + rm -rf build diff --git a/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/get_voc_opts.m b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/get_voc_opts.m new file mode 100644 index 000000000..629597a1f --- /dev/null +++ b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/get_voc_opts.m @@ -0,0 +1,14 @@ +function VOCopts = get_voc_opts(path) + +tmp = pwd; +cd(path); +try + addpath('VOCcode'); + VOCinit; +catch + rmpath('VOCcode'); + cd(tmp); + error(sprintf('VOCcode directory not found under %s', path)); +end +rmpath('VOCcode'); +cd(tmp); diff --git a/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/voc_eval.m b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/voc_eval.m new file mode 100644 index 000000000..1911a0e39 --- /dev/null +++ b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/voc_eval.m @@ -0,0 +1,56 @@ +function res = voc_eval(path, comp_id, test_set, output_dir) + +VOCopts = get_voc_opts(path); +VOCopts.testset = test_set; + +for i = 1:length(VOCopts.classes) + cls = VOCopts.classes{i}; + res(i) = voc_eval_cls(cls, VOCopts, comp_id, output_dir); +end + +fprintf('\n~~~~~~~~~~~~~~~~~~~~\n'); +fprintf('Results:\n'); +aps = [res(:).ap]'; +fprintf('%.1f\n', aps * 100); +fprintf('%.1f\n', mean(aps) * 100); +fprintf('~~~~~~~~~~~~~~~~~~~~\n'); + +function res = voc_eval_cls(cls, VOCopts, comp_id, output_dir) + +test_set = VOCopts.testset; +year = VOCopts.dataset(4:end); + +addpath(fullfile(VOCopts.datadir, 'VOCcode')); + +res_fn = sprintf(VOCopts.detrespath, comp_id, cls); + +recall = []; +prec = []; +ap = 0; +ap_auc = 0; + +do_eval = (str2num(year) <= 2007) | ~strcmp(test_set, 'test'); +if do_eval + % Bug in VOCevaldet requires that tic has been called first + tic; + [recall, prec, ap] = VOCevaldet(VOCopts, comp_id, cls, true); + ap_auc = xVOCap(recall, prec); + + % force plot limits + ylim([0 1]); + xlim([0 1]); + + print(gcf, '-djpeg', '-r0', ... + [output_dir '/' cls '_pr.jpg']); +end +fprintf('!!! %s : %.4f %.4f\n', cls, ap, ap_auc); + +res.recall = recall; +res.prec = prec; +res.ap = ap; +res.ap_auc = ap_auc; + +save([output_dir '/' cls '_pr.mat'], ... + 'res', 'recall', 'prec', 'ap', 'ap_auc'); + +rmpath(fullfile(VOCopts.datadir, 'VOCcode')); diff --git a/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/xVOCap.m b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/xVOCap.m new file mode 100644 index 000000000..de6c6283c --- /dev/null +++ b/examples/rfcn/lib/datasets/VOCdevkit-matlab-wrapper/xVOCap.m @@ -0,0 +1,10 @@ +function ap = xVOCap(rec,prec) +% From the PASCAL VOC 2011 devkit + +mrec=[0 ; rec ; 1]; +mpre=[0 ; prec ; 0]; +for i=numel(mpre)-1:-1:1 + mpre(i)=max(mpre(i),mpre(i+1)); +end +i=find(mrec(2:end)~=mrec(1:end-1))+1; +ap=sum((mrec(i)-mrec(i-1)).*mpre(i)); diff --git a/examples/rfcn/lib/datasets/__init__.py b/examples/rfcn/lib/datasets/__init__.py new file mode 100644 index 000000000..7ba6a65c5 --- /dev/null +++ b/examples/rfcn/lib/datasets/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- diff --git a/examples/rfcn/lib/datasets/coco.py b/examples/rfcn/lib/datasets/coco.py new file mode 100644 index 000000000..00b2954bc --- /dev/null +++ b/examples/rfcn/lib/datasets/coco.py @@ -0,0 +1,414 @@ +# -------------------------------------------------------- +# Fast/er R-CNN +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +from datasets.imdb import imdb +import datasets.ds_utils as ds_utils +from fast_rcnn.config import cfg +import os.path as osp +import sys +import os +import numpy as np +import scipy.sparse +import scipy.io as sio +import cPickle +import json +import uuid +# COCO API +from pycocotools.coco import COCO +from pycocotools.cocoeval import COCOeval +from pycocotools import mask as COCOmask + +def _filter_crowd_proposals(roidb, crowd_thresh): + """ + Finds proposals that are inside crowd regions and marks them with + overlap = -1 (for all gt rois), which means they will be excluded from + training. + """ + for ix, entry in enumerate(roidb): + overlaps = entry['gt_overlaps'].toarray() + crowd_inds = np.where(overlaps.max(axis=1) == -1)[0] + non_gt_inds = np.where(entry['gt_classes'] == 0)[0] + if len(crowd_inds) == 0 or len(non_gt_inds) == 0: + continue + iscrowd = [int(True) for _ in xrange(len(crowd_inds))] + crowd_boxes = ds_utils.xyxy_to_xywh(entry['boxes'][crowd_inds, :]) + non_gt_boxes = ds_utils.xyxy_to_xywh(entry['boxes'][non_gt_inds, :]) + ious = COCOmask.iou(non_gt_boxes, crowd_boxes, iscrowd) + bad_inds = np.where(ious.max(axis=1) > crowd_thresh)[0] + overlaps[non_gt_inds[bad_inds], :] = -1 + roidb[ix]['gt_overlaps'] = scipy.sparse.csr_matrix(overlaps) + return roidb + +class coco(imdb): + def __init__(self, image_set, year): + imdb.__init__(self, 'coco_' + year + '_' + image_set) + # COCO specific config options + self.config = {'top_k' : 2000, + 'use_salt' : True, + 'cleanup' : True, + 'crowd_thresh' : 0.7, + 'rpn_file': None, + 'min_size' : 2} + # name, paths + self._year = year + self._image_set = image_set + self._data_path = osp.join(cfg.DATA_DIR, 'coco') + # load COCO API, classes, class <-> id mappings + self._COCO = COCO(self._get_ann_file()) + cats = self._COCO.loadCats(self._COCO.getCatIds()) + self._classes = tuple(['__background__'] + [c['name'] for c in cats]) + self._class_to_ind = dict(zip(self.classes, xrange(self.num_classes))) + self._class_to_coco_cat_id = dict(zip([c['name'] for c in cats], + self._COCO.getCatIds())) + self._image_index = self._load_image_set_index() + # Default to roidb handler + self.set_proposal_method('selective_search') + self.competition_mode(False) + + # Some image sets are "views" (i.e. subsets) into others. + # For example, minival2014 is a random 5000 image subset of val2014. + # This mapping tells us where the view's images and proposals come from. + self._view_map = { + 'minival2014' : 'val2014', # 5k val2014 subset + 'valminusminival2014' : 'val2014', # val2014 \setminus minival2014 + } + coco_name = image_set + year # e.g., "val2014" + self._data_name = (self._view_map[coco_name] + if self._view_map.has_key(coco_name) + else coco_name) + # Dataset splits that have ground-truth annotations (test splits + # do not have gt annotations) + self._gt_splits = ('train', 'val', 'minival') + + def _get_ann_file(self): + prefix = 'instances' if self._image_set.find('test') == -1 \ + else 'image_info' + return osp.join(self._data_path, 'annotations', + prefix + '_' + self._image_set + self._year + '.json') + + def _load_image_set_index(self): + """ + Load image ids. + """ + image_ids = self._COCO.getImgIds() + return image_ids + + def _get_widths(self): + anns = self._COCO.loadImgs(self._image_index) + widths = [ann['width'] for ann in anns] + return widths + + def image_path_at(self, i): + """ + Return the absolute path to image i in the image sequence. + """ + return self.image_path_from_index(self._image_index[i]) + + def image_path_from_index(self, index): + """ + Construct an image path from the image's "index" identifier. + """ + # Example image path for index=119993: + # images/train2014/COCO_train2014_000000119993.jpg + file_name = ('COCO_' + self._data_name + '_' + + str(index).zfill(12) + '.jpg') + image_path = osp.join(self._data_path, 'images', + self._data_name, file_name) + assert osp.exists(image_path), \ + 'Path does not exist: {}'.format(image_path) + return image_path + + def selective_search_roidb(self): + return self._roidb_from_proposals('selective_search') + + def edge_boxes_roidb(self): + return self._roidb_from_proposals('edge_boxes_AR') + + def mcg_roidb(self): + return self._roidb_from_proposals('MCG') + + def rpn_roidb(self): + if (self._image_set != 'val') and ('test' not in self._image_set): + gt_roidb = self.gt_roidb() + rpn_roidb = self._load_rpn_roidb(gt_roidb) + roidb = imdb.merge_roidbs(gt_roidb, rpn_roidb) + else: + roidb = self._load_rpn_roidb(None) + + return roidb + + def _load_rpn_roidb(self, gt_roidb): + filename = self.config['rpn_file'] + print 'loading {}'.format(filename) + assert os.path.exists(filename), \ + 'rpn data not found at: {}'.format(filename) + with open(filename, 'rb') as f: + box_list = cPickle.load(f) + return self.create_roidb_from_box_list(box_list, gt_roidb) + + def _roidb_from_proposals(self, method): + """ + Creates a roidb from pre-computed proposals of a particular methods. + """ + top_k = self.config['top_k'] + cache_file = osp.join(self.cache_path, self.name + + '_{:s}_top{:d}'.format(method, top_k) + + '_roidb.pkl') + + if osp.exists(cache_file): + with open(cache_file, 'rb') as fid: + roidb = cPickle.load(fid) + print '{:s} {:s} roidb loaded from {:s}'.format(self.name, method, + cache_file) + return roidb + + if self._image_set in self._gt_splits: + gt_roidb = self.gt_roidb() + method_roidb = self._load_proposals(method, gt_roidb) + roidb = imdb.merge_roidbs(gt_roidb, method_roidb) + # Make sure we don't use proposals that are contained in crowds + roidb = _filter_crowd_proposals(roidb, self.config['crowd_thresh']) + else: + roidb = self._load_proposals(method, None) + with open(cache_file, 'wb') as fid: + cPickle.dump(roidb, fid, cPickle.HIGHEST_PROTOCOL) + print 'wrote {:s} roidb to {:s}'.format(method, cache_file) + return roidb + + def _load_proposals(self, method, gt_roidb): + """ + Load pre-computed proposals in the format provided by Jan Hosang: + http://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal- + computing/research/object-recognition-and-scene-understanding/how- + good-are-detection-proposals-really/ + For MCG, use boxes from http://www.eecs.berkeley.edu/Research/Projects/ + CS/vision/grouping/mcg/ and convert the file layout using + lib/datasets/tools/mcg_munge.py. + """ + box_list = [] + top_k = self.config['top_k'] + valid_methods = [ + 'MCG', + 'selective_search', + 'edge_boxes_AR', + 'edge_boxes_70'] + assert method in valid_methods + + print 'Loading {} boxes'.format(method) + for i, index in enumerate(self._image_index): + if i % 1000 == 0: + print '{:d} / {:d}'.format(i + 1, len(self._image_index)) + + box_file = osp.join( + cfg.DATA_DIR, 'coco_proposals', method, 'mat', + self._get_box_file(index)) + + raw_data = sio.loadmat(box_file)['boxes'] + boxes = np.maximum(raw_data - 1, 0).astype(np.uint16) + if method == 'MCG': + # Boxes from the MCG website are in (y1, x1, y2, x2) order + boxes = boxes[:, (1, 0, 3, 2)] + # Remove duplicate boxes and very small boxes and then take top k + keep = ds_utils.unique_boxes(boxes) + boxes = boxes[keep, :] + keep = ds_utils.filter_small_boxes(boxes, self.config['min_size']) + boxes = boxes[keep, :] + boxes = boxes[:top_k, :] + box_list.append(boxes) + # Sanity check + im_ann = self._COCO.loadImgs(index)[0] + width = im_ann['width'] + height = im_ann['height'] + ds_utils.validate_boxes(boxes, width=width, height=height) + return self.create_roidb_from_box_list(box_list, gt_roidb) + + def gt_roidb(self): + """ + Return the database of ground-truth regions of interest. + This function loads/saves from/to a cache file to speed up future calls. + """ + cache_file = osp.join(self.cache_path, self.name + '_gt_roidb.pkl') + if osp.exists(cache_file): + with open(cache_file, 'rb') as fid: + roidb = cPickle.load(fid) + print '{} gt roidb loaded from {}'.format(self.name, cache_file) + return roidb + + gt_roidb = [self._load_coco_annotation(index) + for index in self._image_index] + + with open(cache_file, 'wb') as fid: + cPickle.dump(gt_roidb, fid, cPickle.HIGHEST_PROTOCOL) + print 'wrote gt roidb to {}'.format(cache_file) + return gt_roidb + + def _load_coco_annotation(self, index): + """ + Loads COCO bounding-box instance annotations. Crowd instances are + handled by marking their overlaps (with all categories) to -1. This + overlap value means that crowd "instances" are excluded from training. + """ + im_ann = self._COCO.loadImgs(index)[0] + width = im_ann['width'] + height = im_ann['height'] + + annIds = self._COCO.getAnnIds(imgIds=index, iscrowd=None) + objs = self._COCO.loadAnns(annIds) + # Sanitize bboxes -- some are invalid + valid_objs = [] + for obj in objs: + x1 = np.max((0, obj['bbox'][0])) + y1 = np.max((0, obj['bbox'][1])) + x2 = np.min((width - 1, x1 + np.max((0, obj['bbox'][2] - 1)))) + y2 = np.min((height - 1, y1 + np.max((0, obj['bbox'][3] - 1)))) + if obj['area'] > 0 and x2 >= x1 and y2 >= y1: + obj['clean_bbox'] = [x1, y1, x2, y2] + valid_objs.append(obj) + objs = valid_objs + num_objs = len(objs) + + boxes = np.zeros((num_objs, 4), dtype=np.uint16) + gt_classes = np.zeros((num_objs), dtype=np.int32) + overlaps = np.zeros((num_objs, self.num_classes), dtype=np.float32) + seg_areas = np.zeros((num_objs), dtype=np.float32) + + # Lookup table to map from COCO category ids to our internal class + # indices + coco_cat_id_to_class_ind = dict([(self._class_to_coco_cat_id[cls], + self._class_to_ind[cls]) + for cls in self._classes[1:]]) + + for ix, obj in enumerate(objs): + cls = coco_cat_id_to_class_ind[obj['category_id']] + boxes[ix, :] = obj['clean_bbox'] + gt_classes[ix] = cls + seg_areas[ix] = obj['area'] + if obj['iscrowd']: + # Set overlap to -1 for all classes for crowd objects + # so they will be excluded during training + overlaps[ix, :] = -1.0 + else: + overlaps[ix, cls] = 1.0 + + ds_utils.validate_boxes(boxes, width=width, height=height) + overlaps = scipy.sparse.csr_matrix(overlaps) + return {'boxes' : boxes, + 'gt_classes': gt_classes, + 'gt_overlaps' : overlaps, + 'flipped' : False, + 'seg_areas' : seg_areas} + + def _get_box_file(self, index): + # first 14 chars / first 22 chars / all chars + .mat + # COCO_val2014_0/COCO_val2014_000000447/COCO_val2014_000000447991.mat + file_name = ('COCO_' + self._data_name + + '_' + str(index).zfill(12) + '.mat') + return osp.join(file_name[:14], file_name[:22], file_name) + + def _print_detection_eval_metrics(self, coco_eval): + IoU_lo_thresh = 0.5 + IoU_hi_thresh = 0.95 + def _get_thr_ind(coco_eval, thr): + ind = np.where((coco_eval.params.iouThrs > thr - 1e-5) & + (coco_eval.params.iouThrs < thr + 1e-5))[0][0] + iou_thr = coco_eval.params.iouThrs[ind] + assert np.isclose(iou_thr, thr) + return ind + + ind_lo = _get_thr_ind(coco_eval, IoU_lo_thresh) + ind_hi = _get_thr_ind(coco_eval, IoU_hi_thresh) + # precision has dims (iou, recall, cls, area range, max dets) + # area range index 0: all area ranges + # max dets index 2: 100 per image + precision = \ + coco_eval.eval['precision'][ind_lo:(ind_hi + 1), :, :, 0, 2] + ap_default = np.mean(precision[precision > -1]) + print ('~~~~ Mean and per-category AP @ IoU=[{:.2f},{:.2f}] ' + '~~~~').format(IoU_lo_thresh, IoU_hi_thresh) + print '{:.1f}'.format(100 * ap_default) + for cls_ind, cls in enumerate(self.classes): + if cls == '__background__': + continue + # minus 1 because of __background__ + precision = coco_eval.eval['precision'][ind_lo:(ind_hi + 1), :, cls_ind - 1, 0, 2] + ap = np.mean(precision[precision > -1]) + print '{:.1f}'.format(100 * ap) + + print '~~~~ Summary metrics ~~~~' + coco_eval.summarize() + + def _do_detection_eval(self, res_file, output_dir): + ann_type = 'bbox' + coco_dt = self._COCO.loadRes(res_file) + coco_eval = COCOeval(self._COCO, coco_dt) + coco_eval.params.useSegm = (ann_type == 'segm') + coco_eval.evaluate() + coco_eval.accumulate() + self._print_detection_eval_metrics(coco_eval) + eval_file = osp.join(output_dir, 'detection_results.pkl') + with open(eval_file, 'wb') as fid: + cPickle.dump(coco_eval, fid, cPickle.HIGHEST_PROTOCOL) + print 'Wrote COCO eval results to: {}'.format(eval_file) + + def _coco_results_one_category(self, boxes, cat_id): + results = [] + for im_ind, index in enumerate(self.image_index): + dets = boxes[im_ind].astype(np.float) + if dets == []: + continue + scores = dets[:, -1] + xs = dets[:, 0] + ys = dets[:, 1] + ws = dets[:, 2] - xs + 1 + hs = dets[:, 3] - ys + 1 + results.extend( + [{'image_id' : index, + 'category_id' : cat_id, + 'bbox' : [xs[k], ys[k], ws[k], hs[k]], + 'score' : scores[k]} for k in xrange(dets.shape[0])]) + return results + + def _write_coco_results_file(self, all_boxes, res_file): + # [{"image_id": 42, + # "category_id": 18, + # "bbox": [258.15,41.29,348.26,243.78], + # "score": 0.236}, ...] + results = [] + for cls_ind, cls in enumerate(self.classes): + if cls == '__background__': + continue + print 'Collecting {} results ({:d}/{:d})'.format(cls, cls_ind, + self.num_classes - 1) + coco_cat_id = self._class_to_coco_cat_id[cls] + results.extend(self._coco_results_one_category(all_boxes[cls_ind], + coco_cat_id)) + print 'Writing results json to {}'.format(res_file) + with open(res_file, 'w') as fid: + json.dump(results, fid) + + def evaluate_detections(self, all_boxes, output_dir): + res_file = osp.join(output_dir, ('detections_' + + self._image_set + + self._year + + '_results')) + if self.config['use_salt']: + res_file += '_{}'.format(str(uuid.uuid4())) + res_file += '.json' + self._write_coco_results_file(all_boxes, res_file) + # Only do evaluation on non-test sets + if self._image_set.find('test') == -1: + self._do_detection_eval(res_file, output_dir) + # Optionally cleanup results json file + if self.config['cleanup']: + os.remove(res_file) + + def competition_mode(self, on): + if on: + self.config['use_salt'] = False + self.config['cleanup'] = False + else: + self.config['use_salt'] = True + self.config['cleanup'] = True diff --git a/examples/rfcn/lib/datasets/ds_utils.py b/examples/rfcn/lib/datasets/ds_utils.py new file mode 100644 index 000000000..f66a7f687 --- /dev/null +++ b/examples/rfcn/lib/datasets/ds_utils.py @@ -0,0 +1,41 @@ +# -------------------------------------------------------- +# Fast/er R-CNN +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np + +def unique_boxes(boxes, scale=1.0): + """Return indices of unique boxes.""" + v = np.array([1, 1e3, 1e6, 1e9]) + hashes = np.round(boxes * scale).dot(v) + _, index = np.unique(hashes, return_index=True) + return np.sort(index) + +def xywh_to_xyxy(boxes): + """Convert [x y w h] box format to [x1 y1 x2 y2] format.""" + return np.hstack((boxes[:, 0:2], boxes[:, 0:2] + boxes[:, 2:4] - 1)) + +def xyxy_to_xywh(boxes): + """Convert [x1 y1 x2 y2] box format to [x y w h] format.""" + return np.hstack((boxes[:, 0:2], boxes[:, 2:4] - boxes[:, 0:2] + 1)) + +def validate_boxes(boxes, width=0, height=0): + """Check that a set of boxes are valid.""" + x1 = boxes[:, 0] + y1 = boxes[:, 1] + x2 = boxes[:, 2] + y2 = boxes[:, 3] + assert (x1 >= 0).all() + assert (y1 >= 0).all() + assert (x2 >= x1).all() + assert (y2 >= y1).all() + assert (x2 < width).all() + assert (y2 < height).all() + +def filter_small_boxes(boxes, min_size): + w = boxes[:, 2] - boxes[:, 0] + h = boxes[:, 3] - boxes[:, 1] + keep = np.where((w >= min_size) & (h > min_size))[0] + return keep diff --git a/examples/rfcn/lib/datasets/factory.py b/examples/rfcn/lib/datasets/factory.py new file mode 100644 index 000000000..65de28d83 --- /dev/null +++ b/examples/rfcn/lib/datasets/factory.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Factory method for easily getting imdbs by name.""" + +__sets = {} + +from datasets.pascal_voc import pascal_voc +from datasets.coco import coco +import numpy as np + +# Set up voc__ using selective search "fast" mode +for year in ['2007', '2012', '0712']: + for split in ['train', 'val', 'trainval', 'test']: + name = 'voc_{}_{}'.format(year, split) + __sets[name] = (lambda split=split, year=year: pascal_voc(split, year)) + +# Set up coco_2014_ +for year in ['2014']: + for split in ['train', 'val', 'minival', 'valminusminival']: + name = 'coco_{}_{}'.format(year, split) + __sets[name] = (lambda split=split, year=year: coco(split, year)) + +# Set up coco_2015_ +for year in ['2015']: + for split in ['test', 'test-dev']: + name = 'coco_{}_{}'.format(year, split) + __sets[name] = (lambda split=split, year=year: coco(split, year)) + +# Set up luna_2016_ +for year in ['2016']: + for split in ['trainval', 'test']: + name = 'luna_{}_{}'.format(year, split) + __sets[name] = (lambda split=split, year=year: luna(split, year)) + +def get_imdb(name): + """Get an imdb (image database) by name.""" + if not __sets.has_key(name): + raise KeyError('Unknown dataset: {}'.format(name)) + return __sets[name]() + +def list_imdbs(): + """List all registered imdbs.""" + return __sets.keys() diff --git a/examples/rfcn/lib/datasets/imdb.py b/examples/rfcn/lib/datasets/imdb.py new file mode 100644 index 000000000..41c9ead06 --- /dev/null +++ b/examples/rfcn/lib/datasets/imdb.py @@ -0,0 +1,253 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import os +import os.path as osp +import PIL +from utils.cython_bbox import bbox_overlaps +import numpy as np +import scipy.sparse +from fast_rcnn.config import cfg + +class imdb(object): + """Image database.""" + + def __init__(self, name): + self._name = name + self._num_classes = 0 + self._classes = [] + self._image_index = [] + self._obj_proposer = 'selective_search' + self._roidb = None + self._roidb_handler = self.default_roidb + # Use this dict for storing dataset specific config options + self.config = {} + + @property + def name(self): + return self._name + + @property + def num_classes(self): + return len(self._classes) + + @property + def classes(self): + return self._classes + + @property + def image_index(self): + return self._image_index + + @property + def roidb_handler(self): + return self._roidb_handler + + @roidb_handler.setter + def roidb_handler(self, val): + self._roidb_handler = val + + def set_proposal_method(self, method): + method = eval('self.' + method + '_roidb') + self.roidb_handler = method + + @property + def roidb(self): + # A roidb is a list of dictionaries, each with the following keys: + # boxes + # gt_overlaps + # gt_classes + # flipped + if self._roidb is not None: + return self._roidb + self._roidb = self.roidb_handler() + return self._roidb + + @property + def cache_path(self): + cache_path = osp.abspath(osp.join(cfg.DATA_DIR, 'cache')) + if not os.path.exists(cache_path): + os.makedirs(cache_path) + return cache_path + + @property + def num_images(self): + return len(self.image_index) + + def image_path_at(self, i): + raise NotImplementedError + + def default_roidb(self): + raise NotImplementedError + + def evaluate_detections(self, all_boxes, output_dir=None): + """ + all_boxes is a list of length number-of-classes. + Each list element is a list of length number-of-images. + Each of those list elements is either an empty list [] + or a numpy array of detection. + + all_boxes[class][image] = [] or np.array of shape #dets x 5 + """ + raise NotImplementedError + + def _get_widths(self): + return [PIL.Image.open(self.image_path_at(i)).size[0] + for i in xrange(self.num_images)] + + def append_flipped_images(self): + num_images = self.num_images + widths = self._get_widths() + for i in xrange(num_images): + boxes = self.roidb[i]['boxes'].copy() + oldx1 = boxes[:, 0].copy() + oldx2 = boxes[:, 2].copy() + boxes[:, 0] = widths[i] - oldx2 + boxes[:, 2] = widths[i] - oldx1 + assert (boxes[:, 2] >= boxes[:, 0]).all() + entry = {'boxes' : boxes, + 'gt_overlaps' : self.roidb[i]['gt_overlaps'], + 'gt_classes' : self.roidb[i]['gt_classes'], + 'flipped' : True} + self.roidb.append(entry) + self._image_index = self._image_index * 2 + + def evaluate_recall(self, candidate_boxes=None, thresholds=None, + area='all', limit=None): + """Evaluate detection proposal recall metrics. + + Returns: + results: dictionary of results with keys + 'ar': average recall + 'recalls': vector recalls at each IoU overlap threshold + 'thresholds': vector of IoU overlap thresholds + 'gt_overlaps': vector of all ground-truth overlaps + """ + # Record max overlap value for each gt box + # Return vector of overlap values + areas = { 'all': 0, 'small': 1, 'medium': 2, 'large': 3, + '96-128': 4, '128-256': 5, '256-512': 6, '512-inf': 7} + area_ranges = [ [0**2, 1e5**2], # all + [0**2, 32**2], # small + [32**2, 96**2], # medium + [96**2, 1e5**2], # large + [96**2, 128**2], # 96-128 + [128**2, 256**2], # 128-256 + [256**2, 512**2], # 256-512 + [512**2, 1e5**2], # 512-inf + ] + assert areas.has_key(area), 'unknown area range: {}'.format(area) + area_range = area_ranges[areas[area]] + gt_overlaps = np.zeros(0) + num_pos = 0 + for i in xrange(self.num_images): + # Checking for max_overlaps == 1 avoids including crowd annotations + # (...pretty hacking :/) + max_gt_overlaps = self.roidb[i]['gt_overlaps'].toarray().max(axis=1) + gt_inds = np.where((self.roidb[i]['gt_classes'] > 0) & + (max_gt_overlaps == 1))[0] + gt_boxes = self.roidb[i]['boxes'][gt_inds, :] + gt_areas = self.roidb[i]['seg_areas'][gt_inds] + valid_gt_inds = np.where((gt_areas >= area_range[0]) & + (gt_areas <= area_range[1]))[0] + gt_boxes = gt_boxes[valid_gt_inds, :] + num_pos += len(valid_gt_inds) + + if candidate_boxes is None: + # If candidate_boxes is not supplied, the default is to use the + # non-ground-truth boxes from this roidb + non_gt_inds = np.where(self.roidb[i]['gt_classes'] == 0)[0] + boxes = self.roidb[i]['boxes'][non_gt_inds, :] + else: + boxes = candidate_boxes[i] + if boxes.shape[0] == 0: + continue + if limit is not None and boxes.shape[0] > limit: + boxes = boxes[:limit, :] + + overlaps = bbox_overlaps(boxes.astype(np.float), + gt_boxes.astype(np.float)) + + _gt_overlaps = np.zeros((gt_boxes.shape[0])) + for j in xrange(gt_boxes.shape[0]): + # find which proposal box maximally covers each gt box + argmax_overlaps = overlaps.argmax(axis=0) + # and get the iou amount of coverage for each gt box + max_overlaps = overlaps.max(axis=0) + # find which gt box is 'best' covered (i.e. 'best' = most iou) + gt_ind = max_overlaps.argmax() + gt_ovr = max_overlaps.max() + assert(gt_ovr >= 0) + # find the proposal box that covers the best covered gt box + box_ind = argmax_overlaps[gt_ind] + # record the iou coverage of this gt box + _gt_overlaps[j] = overlaps[box_ind, gt_ind] + assert(_gt_overlaps[j] == gt_ovr) + # mark the proposal box and the gt box as used + overlaps[box_ind, :] = -1 + overlaps[:, gt_ind] = -1 + # append recorded iou coverage level + gt_overlaps = np.hstack((gt_overlaps, _gt_overlaps)) + + gt_overlaps = np.sort(gt_overlaps) + if thresholds is None: + step = 0.05 + thresholds = np.arange(0.5, 0.95 + 1e-5, step) + recalls = np.zeros_like(thresholds) + # compute recall for each iou threshold + for i, t in enumerate(thresholds): + recalls[i] = (gt_overlaps >= t).sum() / float(num_pos) + # ar = 2 * np.trapz(recalls, thresholds) + ar = recalls.mean() + return {'ar': ar, 'recalls': recalls, 'thresholds': thresholds, + 'gt_overlaps': gt_overlaps} + + def create_roidb_from_box_list(self, box_list, gt_roidb): + assert len(box_list) == self.num_images, \ + 'Number of boxes must match number of ground-truth images' + roidb = [] + for i in xrange(self.num_images): + boxes = box_list[i] + num_boxes = boxes.shape[0] + overlaps = np.zeros((num_boxes, self.num_classes), dtype=np.float32) + + if gt_roidb is not None and gt_roidb[i]['boxes'].size > 0: + gt_boxes = gt_roidb[i]['boxes'] + gt_classes = gt_roidb[i]['gt_classes'] + gt_overlaps = bbox_overlaps(boxes.astype(np.float), + gt_boxes.astype(np.float)) + argmaxes = gt_overlaps.argmax(axis=1) + maxes = gt_overlaps.max(axis=1) + I = np.where(maxes > 0)[0] + overlaps[I, gt_classes[argmaxes[I]]] = maxes[I] + + overlaps = scipy.sparse.csr_matrix(overlaps) + roidb.append({ + 'boxes' : boxes, + 'gt_classes' : np.zeros((num_boxes,), dtype=np.int32), + 'gt_overlaps' : overlaps, + 'flipped' : False, + 'seg_areas' : np.zeros((num_boxes,), dtype=np.float32), + }) + return roidb + + @staticmethod + def merge_roidbs(a, b): + assert len(a) == len(b) + for i in xrange(len(a)): + a[i]['boxes'] = np.vstack((a[i]['boxes'], b[i]['boxes'])) + a[i]['gt_classes'] = np.hstack((a[i]['gt_classes'], + b[i]['gt_classes'])) + a[i]['gt_overlaps'] = scipy.sparse.vstack([a[i]['gt_overlaps'], + b[i]['gt_overlaps']]) + a[i]['seg_areas'] = np.hstack((a[i]['seg_areas'], + b[i]['seg_areas'])) + return a + + def competition_mode(self, on): + """Turn competition mode on or off.""" + pass diff --git a/examples/rfcn/lib/datasets/luna.py b/examples/rfcn/lib/datasets/luna.py new file mode 100644 index 000000000..55828ea6d --- /dev/null +++ b/examples/rfcn/lib/datasets/luna.py @@ -0,0 +1,169 @@ +# -------------------------------------------------------- +# LUNA dataset reader +# YAO Matrix (yaoweifeng0301@126.com) +# -------------------------------------------------------- + +import os +from datasets.imdb import imdb +import datasets.ds_utils as ds_utils +import xml.etree.ElementTree as ET +import numpy as np +import scipy.sparse +import scipy.io as sio +import utils.cython_bbox +import cPickle +import subprocess +import uuid +import gzip +from fast_rcnn.config import cfg + +class luna(imdb): + def __init__(self, image_set, year, data_path=None): + imdb.__init__(self, 'luna_' + year + '_' + image_set) + self._year = year + self._image_set = image_set + self._data_path = self._get_default_path() if data_path is None \ + else data_path + self._classes = ('__background__', # always index 0 + 'nodule') + self._class_to_ind = dict(zip(self.classes, xrange(self.num_classes))) + self._image_ext = '.pickle.gz' + self._image_index = self._load_image_set_index() + # Default to roidb handler + self._roidb_handler = self.gt_roidb + self._salt = str(uuid.uuid4()) + self._comp_id = 'comp4' + + # LUNA specific config options + self.config = {'cleanup' : True, + 'use_salt' : True, + 'rpn_file' : None, + 'min_size' : 2} + + assert os.path.exists(self._data_path), \ + 'LUNA data path does not exist: {}'.format(self._data_path) + + def image_path_at(self, i): + """ + Return the absolute path to image i in the image sequence. + """ + return self.image_path_from_index(self._image_index[i]) + + def image_path_from_index(self, index): + """ + Construct an image path from the image's "index" identifier. + """ + bb_directory = os.path.join(self._data_path, '1_1_1mm_slices_lung') + [subfolder, filename] = index.split('-') + image_path = os.path.join(bb_directory, 'subset' + str(subfolder), filename) + assert os.path.exists(image_path), \ + 'Path does not exist: {}'.format(image_path) + return image_path + + def _load_image_set_index(self): + """ + Load the indexes listed in this dataset's image set file. + """ + # Example path to image set file: + image_set_file = os.path.join(self._data_path, 'ImageSets', + self._image_set + '.txt') + assert os.path.exists(image_set_file), \ + 'Path does not exist: {}'.format(image_set_file) + with open(image_set_file) as f: + image_index = [x.strip() for x in f.readlines()] + return image_index + + def _get_default_path(self): + """ + Return the default path where LUNA is expected to be installed. + """ + return os.path.join(cfg.DATA_DIR, 'LUNA' + self._year) + + def gt_roidb(self): + """ + Return the database of ground-truth regions of interest. + + This function loads/saves from/to a cache file to speed up future calls. + """ + cache_file = os.path.join(self.cache_path, self.name + '_gt_roidb.pkl') + if os.path.exists(cache_file): + with open(cache_file, 'rb') as fid: + roidb = cPickle.load(fid) + print '{} gt roidb loaded from {}'.format(self.name, cache_file) + return roidb + + gt_roidb = [self._load_luna_annotation(index) + for index in self.image_index] + with open(cache_file, 'wb') as fid: + cPickle.dump(gt_roidb, fid, cPickle.HIGHEST_PROTOCOL) + print 'wrote gt roidb to {}'.format(cache_file) + + return gt_roidb + + def rpn_roidb(self): + if self._image_set != 'test': + gt_roidb = self.gt_roidb() + rpn_roidb = self._load_rpn_roidb(gt_roidb) + roidb = imdb.merge_roidbs(gt_roidb, rpn_roidb) + else: + roidb = self._load_rpn_roidb(None) + + return roidb + + def _load_rpn_roidb(self, gt_roidb): + filename = self.config['rpn_file'] + print 'loading {}'.format(filename) + assert os.path.exists(filename), \ + 'rpn data not found at: {}'.format(filename) + with open(filename, 'rb') as f: + box_list = cPickle.load(f) + return self.create_roidb_from_box_list(box_list, gt_roidb) + + def _load_luna_annotation(self, index): + """ + Load image and bounding boxes info from luna bbox file format + """ + bb_directory = os.path.join(self._data_path, '1_1_1mm_slices_bbox') + [subfolder, filename] = index.split('-') + abs_filename = os.path.join(bb_directory, 'subset' + str(subfolder), filename) + + with gzip.open(abs_filename, 'rb') as f: + [gt_boxes, im_info] = cPickle.load(f) + num_objs = len(gt_boxes) + + boxes = np.zeros((num_objs, 4), dtype = np.uint16) + gt_classes = np.zeros((num_objs), dtype = np.int32) + overlaps = np.zeros((num_objs, self.num_classes), dtype = np.float32) + # "Seg" area for luna is just the box area + seg_areas = np.zeros((num_objs), dtype = np.float32) + + # Load object bounding boxes into a data frame. + for ix, obj in enumerate(gt_boxes): + # Make pixel indexes 0-based + x1 = obj[0] + y1 = obj[1] + x2 = obj[2] + y2 = obj[3] + cls = int(obj[4]) + boxes[ix, :] = [x1, y1, x2, y2] + gt_classes[ix] = cls + overlaps[ix, cls] = 1.0 + seg_areas[ix] = (x2 - x1 + 1) * (y2 - y1 + 1) + + overlaps = scipy.sparse.csr_matrix(overlaps) + + return {'boxes' : boxes, + 'gt_classes': gt_classes, + 'gt_overlaps' : overlaps, + 'flipped' : False, + 'seg_areas' : seg_areas} + + def _get_comp_id(self): + comp_id = (self._comp_id + '_' + self._salt if self.config['use_salt'] else self._comp_id) + return comp_id + +if __name__ == '__main__': + from datasets.luna import luna + d = luna('trainval', '2016') + res = d.roidb + from IPython import embed; embed() diff --git a/examples/rfcn/lib/datasets/pascal_voc.py b/examples/rfcn/lib/datasets/pascal_voc.py new file mode 100644 index 000000000..b55f2f6b2 --- /dev/null +++ b/examples/rfcn/lib/datasets/pascal_voc.py @@ -0,0 +1,344 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import os +from datasets.imdb import imdb +import datasets.ds_utils as ds_utils +import xml.etree.ElementTree as ET +import numpy as np +import scipy.sparse +import scipy.io as sio +import utils.cython_bbox +import cPickle +import subprocess +import uuid +from voc_eval import voc_eval +from fast_rcnn.config import cfg + +class pascal_voc(imdb): + def __init__(self, image_set, year, devkit_path=None): + imdb.__init__(self, 'voc_' + year + '_' + image_set) + self._year = year + self._image_set = image_set + self._devkit_path = self._get_default_path() if devkit_path is None \ + else devkit_path + self._data_path = os.path.join(self._devkit_path, 'VOC' + self._year) + self._classes = ('__background__', # always index 0 + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', + 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', + 'sheep', 'sofa', 'train', 'tvmonitor') + self._class_to_ind = dict(zip(self.classes, xrange(self.num_classes))) + self._image_ext = '.jpg' + self._image_index = self._load_image_set_index() + # Default to roidb handler + self._roidb_handler = self.selective_search_roidb + self._salt = str(uuid.uuid4()) + self._comp_id = 'comp4' + + # PASCAL specific config options + self.config = {'cleanup' : True, + 'use_salt' : True, + 'use_diff' : False, + 'matlab_eval' : False, + 'rpn_file' : None, + 'min_size' : 2} + + assert os.path.exists(self._devkit_path), \ + 'VOCdevkit path does not exist: {}'.format(self._devkit_path) + assert os.path.exists(self._data_path), \ + 'Path does not exist: {}'.format(self._data_path) + + def image_path_at(self, i): + """ + Return the absolute path to image i in the image sequence. + """ + return self.image_path_from_index(self._image_index[i]) + + def image_path_from_index(self, index): + """ + Construct an image path from the image's "index" identifier. + """ + image_path = os.path.join(self._data_path, 'JPEGImages', + index + self._image_ext) + assert os.path.exists(image_path), \ + 'Path does not exist: {}'.format(image_path) + return image_path + + def _load_image_set_index(self): + """ + Load the indexes listed in this dataset's image set file. + """ + # Example path to image set file: + # self._devkit_path + /VOCdevkit2007/VOC2007/ImageSets/Main/val.txt + image_set_file = os.path.join(self._data_path, 'ImageSets', 'Main', + self._image_set + '.txt') + assert os.path.exists(image_set_file), \ + 'Path does not exist: {}'.format(image_set_file) + with open(image_set_file) as f: + image_index = [x.strip() for x in f.readlines()] + return image_index + + def _get_default_path(self): + """ + Return the default path where PASCAL VOC is expected to be installed. + """ + return os.path.join(cfg.DATA_DIR, 'VOCdevkit' + self._year) + + def gt_roidb(self): + """ + Return the database of ground-truth regions of interest. + + This function loads/saves from/to a cache file to speed up future calls. + """ + cache_file = os.path.join(self.cache_path, self.name + '_gt_roidb.pkl') + if os.path.exists(cache_file): + with open(cache_file, 'rb') as fid: + roidb = cPickle.load(fid) + print '{} gt roidb loaded from {}'.format(self.name, cache_file) + return roidb + + gt_roidb = [self._load_pascal_annotation(index) + for index in self.image_index] + with open(cache_file, 'wb') as fid: + cPickle.dump(gt_roidb, fid, cPickle.HIGHEST_PROTOCOL) + print 'wrote gt roidb to {}'.format(cache_file) + + return gt_roidb + + def selective_search_roidb(self): + """ + Return the database of selective search regions of interest. + Ground-truth ROIs are also included. + + This function loads/saves from/to a cache file to speed up future calls. + """ + cache_file = os.path.join(self.cache_path, + self.name + '_selective_search_roidb.pkl') + + if os.path.exists(cache_file): + with open(cache_file, 'rb') as fid: + roidb = cPickle.load(fid) + print '{} ss roidb loaded from {}'.format(self.name, cache_file) + return roidb + + if int(self._year) == 2007 or self._image_set != 'test': + gt_roidb = self.gt_roidb() + ss_roidb = self._load_selective_search_roidb(gt_roidb) + roidb = imdb.merge_roidbs(gt_roidb, ss_roidb) + else: + roidb = self._load_selective_search_roidb(None) + with open(cache_file, 'wb') as fid: + cPickle.dump(roidb, fid, cPickle.HIGHEST_PROTOCOL) + print 'wrote ss roidb to {}'.format(cache_file) + + return roidb + + def rpn_roidb(self): + if int(self._year) == 2007 or self._image_set != 'test': + gt_roidb = self.gt_roidb() + rpn_roidb = self._load_rpn_roidb(gt_roidb) + roidb = imdb.merge_roidbs(gt_roidb, rpn_roidb) + else: + roidb = self._load_rpn_roidb(None) + + return roidb + + def _load_rpn_roidb(self, gt_roidb): + filename = self.config['rpn_file'] + print 'loading {}'.format(filename) + assert os.path.exists(filename), \ + 'rpn data not found at: {}'.format(filename) + with open(filename, 'rb') as f: + box_list = cPickle.load(f) + return self.create_roidb_from_box_list(box_list, gt_roidb) + + def _load_selective_search_roidb(self, gt_roidb): + filename = os.path.abspath(os.path.join(cfg.DATA_DIR, + 'selective_search_data', + self.name + '.mat')) + assert os.path.exists(filename), \ + 'Selective search data not found at: {}'.format(filename) + raw_data = sio.loadmat(filename)['boxes'].ravel() + + box_list = [] + for i in xrange(raw_data.shape[0]): + boxes = raw_data[i][:, (1, 0, 3, 2)] - 1 + keep = ds_utils.unique_boxes(boxes) + boxes = boxes[keep, :] + keep = ds_utils.filter_small_boxes(boxes, self.config['min_size']) + boxes = boxes[keep, :] + box_list.append(boxes) + + return self.create_roidb_from_box_list(box_list, gt_roidb) + + def _load_pascal_annotation(self, index): + """ + Load image and bounding boxes info from XML file in the PASCAL VOC + format. + """ + filename = os.path.join(self._data_path, 'Annotations', index + '.xml') + tree = ET.parse(filename) + objs = tree.findall('object') + if not self.config['use_diff']: + # Exclude the samples labeled as difficult + non_diff_objs = [ + obj for obj in objs if int(obj.find('difficult').text) == 0] + # if len(non_diff_objs) != len(objs): + # print 'Removed {} difficult objects'.format( + # len(objs) - len(non_diff_objs)) + objs = non_diff_objs + num_objs = len(objs) + + boxes = np.zeros((num_objs, 4), dtype=np.uint16) + gt_classes = np.zeros((num_objs), dtype=np.int32) + overlaps = np.zeros((num_objs, self.num_classes), dtype=np.float32) + # "Seg" area for pascal is just the box area + seg_areas = np.zeros((num_objs), dtype=np.float32) + + # Load object bounding boxes into a data frame. + for ix, obj in enumerate(objs): + bbox = obj.find('bndbox') + # Make pixel indexes 0-based + x1 = float(bbox.find('xmin').text) - 1 + y1 = float(bbox.find('ymin').text) - 1 + x2 = float(bbox.find('xmax').text) - 1 + y2 = float(bbox.find('ymax').text) - 1 + cls = self._class_to_ind[obj.find('name').text.lower().strip()] + boxes[ix, :] = [x1, y1, x2, y2] + gt_classes[ix] = cls + overlaps[ix, cls] = 1.0 + seg_areas[ix] = (x2 - x1 + 1) * (y2 - y1 + 1) + + overlaps = scipy.sparse.csr_matrix(overlaps) + + return {'boxes' : boxes, + 'gt_classes': gt_classes, + 'gt_overlaps' : overlaps, + 'flipped' : False, + 'seg_areas' : seg_areas} + + def _get_comp_id(self): + comp_id = (self._comp_id + '_' + self._salt if self.config['use_salt'] + else self._comp_id) + return comp_id + + def _get_voc_results_file_template(self): + # VOCdevkit/results/VOC2007/Main/_det_test_aeroplane.txt + filename = self._get_comp_id() + '_det_' + self._image_set + '_{:s}.txt' + path = os.path.join( + self._devkit_path, + 'results', + 'VOC' + self._year, + 'Main', + filename) + return path + + def _write_voc_results_file(self, all_boxes): + for cls_ind, cls in enumerate(self.classes): + if cls == '__background__': + continue + print 'Writing {} VOC results file'.format(cls) + filename = self._get_voc_results_file_template().format(cls) + with open(filename, 'wt') as f: + for im_ind, index in enumerate(self.image_index): + dets = all_boxes[cls_ind][im_ind] + if dets == []: + continue + # the VOCdevkit expects 1-based indices + for k in xrange(dets.shape[0]): + f.write('{:s} {:.3f} {:.1f} {:.1f} {:.1f} {:.1f}\n'. + format(index, dets[k, -1], + dets[k, 0] + 1, dets[k, 1] + 1, + dets[k, 2] + 1, dets[k, 3] + 1)) + + def _do_python_eval(self, output_dir = 'output'): + annopath = os.path.join( + self._devkit_path, + 'VOC' + self._year, + 'Annotations', + '{:s}.xml') + imagesetfile = os.path.join( + self._devkit_path, + 'VOC' + self._year, + 'ImageSets', + 'Main', + self._image_set + '.txt') + cachedir = os.path.join(self._devkit_path, 'annotations_cache') + aps = [] + # The PASCAL VOC metric changed in 2010 + use_07_metric = True if int(self._year) < 2010 else False + print 'VOC07 metric? ' + ('Yes' if use_07_metric else 'No') + if not os.path.isdir(output_dir): + os.mkdir(output_dir) + for i, cls in enumerate(self._classes): + if cls == '__background__': + continue + filename = self._get_voc_results_file_template().format(cls) + rec, prec, ap = voc_eval( + filename, annopath, imagesetfile, cls, cachedir, ovthresh=0.5, + use_07_metric=use_07_metric) + aps += [ap] + print('AP for {} = {:.4f}'.format(cls, ap)) + with open(os.path.join(output_dir, cls + '_pr.pkl'), 'w') as f: + cPickle.dump({'rec': rec, 'prec': prec, 'ap': ap}, f) + print('Mean AP = {:.4f}'.format(np.mean(aps))) + print('~~~~~~~~') + print('Results:') + for ap in aps: + print('{:.3f}'.format(ap)) + print('{:.3f}'.format(np.mean(aps))) + print('~~~~~~~~') + print('') + print('--------------------------------------------------------------') + print('Results computed with the **unofficial** Python eval code.') + print('Results should be very close to the official MATLAB eval code.') + print('Recompute with `./tools/reval.py --matlab ...` for your paper.') + print('-- Thanks, The Management') + print('--------------------------------------------------------------') + + def _do_matlab_eval(self, output_dir='output'): + print '-----------------------------------------------------' + print 'Computing results with the official MATLAB eval code.' + print '-----------------------------------------------------' + path = os.path.join(cfg.ROOT_DIR, 'lib', 'datasets', + 'VOCdevkit-matlab-wrapper') + cmd = 'cd {} && '.format(path) + cmd += '{:s} -nodisplay -nodesktop '.format(cfg.MATLAB) + cmd += '-r "dbstop if error; ' + cmd += 'voc_eval(\'{:s}\',\'{:s}\',\'{:s}\',\'{:s}\'); quit;"' \ + .format(self._devkit_path, self._get_comp_id(), + self._image_set, output_dir) + print('Running:\n{}'.format(cmd)) + status = subprocess.call(cmd, shell=True) + + def evaluate_detections(self, all_boxes, output_dir): + self._write_voc_results_file(all_boxes) + self._do_python_eval(output_dir) + if self.config['matlab_eval']: + self._do_matlab_eval(output_dir) + if self.config['cleanup']: + for cls in self._classes: + if cls == '__background__': + continue + filename = self._get_voc_results_file_template().format(cls) + os.remove(filename) + + def competition_mode(self, on): + if on: + self.config['use_salt'] = False + self.config['cleanup'] = False + else: + self.config['use_salt'] = True + self.config['cleanup'] = True + +if __name__ == '__main__': + from datasets.pascal_voc import pascal_voc + d = pascal_voc('trainval', '2007') + res = d.roidb + from IPython import embed; embed() diff --git a/examples/rfcn/lib/datasets/tools/mcg_munge.py b/examples/rfcn/lib/datasets/tools/mcg_munge.py new file mode 100644 index 000000000..1392aa308 --- /dev/null +++ b/examples/rfcn/lib/datasets/tools/mcg_munge.py @@ -0,0 +1,38 @@ +import os +import sys + +"""Hacky tool to convert file system layout of MCG boxes downloaded from +http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/mcg/ +so that it's consistent with those computed by Jan Hosang (see: +http://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal- + computing/research/object-recognition-and-scene-understanding/how- + good-are-detection-proposals-really/) + +NB: Boxes from the MCG website are in (y1, x1, y2, x2) order. +Boxes from Hosang et al. are in (x1, y1, x2, y2) order. +""" + +def munge(src_dir): + # stored as: ./MCG-COCO-val2014-boxes/COCO_val2014_000000193401.mat + # want: ./MCG/mat/COCO_val2014_0/COCO_val2014_000000141/COCO_val2014_000000141334.mat + + files = os.listdir(src_dir) + for fn in files: + base, ext = os.path.splitext(fn) + # first 14 chars / first 22 chars / all chars + .mat + # COCO_val2014_0/COCO_val2014_000000447/COCO_val2014_000000447991.mat + first = base[:14] + second = base[:22] + dst_dir = os.path.join('MCG', 'mat', first, second) + if not os.path.exists(dst_dir): + os.makedirs(dst_dir) + src = os.path.join(src_dir, fn) + dst = os.path.join(dst_dir, fn) + print 'MV: {} -> {}'.format(src, dst) + os.rename(src, dst) + +if __name__ == '__main__': + # src_dir should look something like: + # src_dir = 'MCG-COCO-val2014-boxes' + src_dir = sys.argv[1] + munge(src_dir) diff --git a/examples/rfcn/lib/datasets/voc_eval.py b/examples/rfcn/lib/datasets/voc_eval.py new file mode 100644 index 000000000..8d0a83076 --- /dev/null +++ b/examples/rfcn/lib/datasets/voc_eval.py @@ -0,0 +1,200 @@ +# -------------------------------------------------------- +# Fast/er R-CNN +# Licensed under The MIT License [see LICENSE for details] +# Written by Bharath Hariharan +# -------------------------------------------------------- + +import xml.etree.ElementTree as ET +import os +import cPickle +import numpy as np + +def parse_rec(filename): + """ Parse a PASCAL VOC xml file """ + tree = ET.parse(filename) + objects = [] + for obj in tree.findall('object'): + obj_struct = {} + obj_struct['name'] = obj.find('name').text + obj_struct['pose'] = obj.find('pose').text + obj_struct['truncated'] = int(obj.find('truncated').text) + obj_struct['difficult'] = int(obj.find('difficult').text) + bbox = obj.find('bndbox') + obj_struct['bbox'] = [int(bbox.find('xmin').text), + int(bbox.find('ymin').text), + int(bbox.find('xmax').text), + int(bbox.find('ymax').text)] + objects.append(obj_struct) + + return objects + +def voc_ap(rec, prec, use_07_metric=False): + """ ap = voc_ap(rec, prec, [use_07_metric]) + Compute VOC AP given precision and recall. + If use_07_metric is true, uses the + VOC 07 11 point method (default:False). + """ + if use_07_metric: + # 11 point metric + ap = 0. + for t in np.arange(0., 1.1, 0.1): + if np.sum(rec >= t) == 0: + p = 0 + else: + p = np.max(prec[rec >= t]) + ap = ap + p / 11. + else: + # correct AP calculation + # first append sentinel values at the end + mrec = np.concatenate(([0.], rec, [1.])) + mpre = np.concatenate(([0.], prec, [0.])) + + # compute the precision envelope + for i in range(mpre.size - 1, 0, -1): + mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) + + # to calculate area under PR curve, look for points + # where X axis (recall) changes value + i = np.where(mrec[1:] != mrec[:-1])[0] + + # and sum (\Delta recall) * prec + ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) + return ap + +def voc_eval(detpath, + annopath, + imagesetfile, + classname, + cachedir, + ovthresh=0.5, + use_07_metric=False): + """rec, prec, ap = voc_eval(detpath, + annopath, + imagesetfile, + classname, + [ovthresh], + [use_07_metric]) + + Top level function that does the PASCAL VOC evaluation. + + detpath: Path to detections + detpath.format(classname) should produce the detection results file. + annopath: Path to annotations + annopath.format(imagename) should be the xml annotations file. + imagesetfile: Text file containing the list of images, one image per line. + classname: Category name (duh) + cachedir: Directory for caching the annotations + [ovthresh]: Overlap threshold (default = 0.5) + [use_07_metric]: Whether to use VOC07's 11 point AP computation + (default False) + """ + # assumes detections are in detpath.format(classname) + # assumes annotations are in annopath.format(imagename) + # assumes imagesetfile is a text file with each line an image name + # cachedir caches the annotations in a pickle file + + # first load gt + if not os.path.isdir(cachedir): + os.mkdir(cachedir) + cachefile = os.path.join(cachedir, 'annots.pkl') + # read list of images + with open(imagesetfile, 'r') as f: + lines = f.readlines() + imagenames = [x.strip() for x in lines] + + if not os.path.isfile(cachefile): + # load annots + recs = {} + for i, imagename in enumerate(imagenames): + recs[imagename] = parse_rec(annopath.format(imagename)) + if i % 100 == 0: + print 'Reading annotation for {:d}/{:d}'.format( + i + 1, len(imagenames)) + # save + print 'Saving cached annotations to {:s}'.format(cachefile) + with open(cachefile, 'w') as f: + cPickle.dump(recs, f) + else: + # load + with open(cachefile, 'r') as f: + recs = cPickle.load(f) + + # extract gt objects for this class + class_recs = {} + npos = 0 + for imagename in imagenames: + R = [obj for obj in recs[imagename] if obj['name'] == classname] + bbox = np.array([x['bbox'] for x in R]) + difficult = np.array([x['difficult'] for x in R]).astype(np.bool) + det = [False] * len(R) + npos = npos + sum(~difficult) + class_recs[imagename] = {'bbox': bbox, + 'difficult': difficult, + 'det': det} + + # read dets + detfile = detpath.format(classname) + with open(detfile, 'r') as f: + lines = f.readlines() + + splitlines = [x.strip().split(' ') for x in lines] + image_ids = [x[0] for x in splitlines] + confidence = np.array([float(x[1]) for x in splitlines]) + BB = np.array([[float(z) for z in x[2:]] for x in splitlines]) + + # sort by confidence + sorted_ind = np.argsort(-confidence) + sorted_scores = np.sort(-confidence) + BB = BB[sorted_ind, :] + image_ids = [image_ids[x] for x in sorted_ind] + + # go down dets and mark TPs and FPs + nd = len(image_ids) + tp = np.zeros(nd) + fp = np.zeros(nd) + for d in range(nd): + R = class_recs[image_ids[d]] + bb = BB[d, :].astype(float) + ovmax = -np.inf + BBGT = R['bbox'].astype(float) + + if BBGT.size > 0: + # compute overlaps + # intersection + ixmin = np.maximum(BBGT[:, 0], bb[0]) + iymin = np.maximum(BBGT[:, 1], bb[1]) + ixmax = np.minimum(BBGT[:, 2], bb[2]) + iymax = np.minimum(BBGT[:, 3], bb[3]) + iw = np.maximum(ixmax - ixmin + 1., 0.) + ih = np.maximum(iymax - iymin + 1., 0.) + inters = iw * ih + + # union + uni = ((bb[2] - bb[0] + 1.) * (bb[3] - bb[1] + 1.) + + (BBGT[:, 2] - BBGT[:, 0] + 1.) * + (BBGT[:, 3] - BBGT[:, 1] + 1.) - inters) + + overlaps = inters / uni + ovmax = np.max(overlaps) + jmax = np.argmax(overlaps) + + if ovmax > ovthresh: + if not R['difficult'][jmax]: + if not R['det'][jmax]: + tp[d] = 1. + R['det'][jmax] = 1 + else: + fp[d] = 1. + else: + fp[d] = 1. + + # compute precision recall + fp = np.cumsum(fp) + tp = np.cumsum(tp) + rec = tp / float(npos) + # avoid divide by zero in case the first detection matches a difficult + # ground truth + prec = tp / np.maximum(tp + fp, np.finfo(np.float64).eps) + ap = voc_ap(rec, prec, use_07_metric) + + return rec, prec, ap diff --git a/examples/rfcn/lib/fast_rcnn/__init__.py b/examples/rfcn/lib/fast_rcnn/__init__.py new file mode 100644 index 000000000..7ba6a65c5 --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- diff --git a/examples/rfcn/lib/fast_rcnn/bbox_transform.py b/examples/rfcn/lib/fast_rcnn/bbox_transform.py new file mode 100644 index 000000000..c02916305 --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/bbox_transform.py @@ -0,0 +1,76 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np + +def bbox_transform(ex_rois, gt_rois): + ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + 1.0 + ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + 1.0 + ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths + ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights + + gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + 1.0 + gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + 1.0 + gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths + gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights + + targets_dx = (gt_ctr_x - ex_ctr_x) / ex_widths + targets_dy = (gt_ctr_y - ex_ctr_y) / ex_heights + targets_dw = np.log(gt_widths / ex_widths) + targets_dh = np.log(gt_heights / ex_heights) + + targets = np.vstack( + (targets_dx, targets_dy, targets_dw, targets_dh)).transpose() + return targets + +def bbox_transform_inv(boxes, deltas): + if boxes.shape[0] == 0: + return np.zeros((0, deltas.shape[1]), dtype=deltas.dtype) + + boxes = boxes.astype(deltas.dtype, copy=False) + + widths = boxes[:, 2] - boxes[:, 0] + 1.0 + heights = boxes[:, 3] - boxes[:, 1] + 1.0 + ctr_x = boxes[:, 0] + 0.5 * widths + ctr_y = boxes[:, 1] + 0.5 * heights + + dx = deltas[:, 0::4] + dy = deltas[:, 1::4] + dw = deltas[:, 2::4] + dh = deltas[:, 3::4] + + pred_ctr_x = dx * widths[:, np.newaxis] + ctr_x[:, np.newaxis] + pred_ctr_y = dy * heights[:, np.newaxis] + ctr_y[:, np.newaxis] + pred_w = np.exp(dw) * widths[:, np.newaxis] + pred_h = np.exp(dh) * heights[:, np.newaxis] + + pred_boxes = np.zeros(deltas.shape, dtype=deltas.dtype) + # x1 + pred_boxes[:, 0::4] = pred_ctr_x - 0.5 * pred_w + # y1 + pred_boxes[:, 1::4] = pred_ctr_y - 0.5 * pred_h + # x2 + pred_boxes[:, 2::4] = pred_ctr_x + 0.5 * pred_w + # y2 + pred_boxes[:, 3::4] = pred_ctr_y + 0.5 * pred_h + + return pred_boxes + +def clip_boxes(boxes, im_shape): + """ + Clip boxes to image boundaries. + """ + + # x1 >= 0 + boxes[:, 0::4] = np.maximum(np.minimum(boxes[:, 0::4], im_shape[1] - 1), 0) + # y1 >= 0 + boxes[:, 1::4] = np.maximum(np.minimum(boxes[:, 1::4], im_shape[0] - 1), 0) + # x2 < im_shape[1] + boxes[:, 2::4] = np.maximum(np.minimum(boxes[:, 2::4], im_shape[1] - 1), 0) + # y2 < im_shape[0] + boxes[:, 3::4] = np.maximum(np.minimum(boxes[:, 3::4], im_shape[0] - 1), 0) + return boxes diff --git a/examples/rfcn/lib/fast_rcnn/config.py b/examples/rfcn/lib/fast_rcnn/config.py new file mode 100644 index 000000000..e838ba3b9 --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/config.py @@ -0,0 +1,300 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Fast R-CNN config system. + +This file specifies default config options for Fast R-CNN. You should not +change values in this file. Instead, you should write a config file (in yaml) +and use cfg_from_file(yaml_file) to load it and override the default options. + +Most tools in $ROOT/tools take a --cfg option to specify an override file. + - See tools/{train,test}_net.py for example code that uses cfg_from_file() + - See experiments/cfgs/*.yml for example YAML config override files +""" + +import os +import os.path as osp +import numpy as np +# `pip install easydict` if you don't have it +from easydict import EasyDict as edict + +__C = edict() +# Consumers can get config by: +# from fast_rcnn_config import cfg +cfg = __C + +# +# Training options +# + +__C.TRAIN = edict() + +# Scales to use during training (can list multiple scales) +# Each scale is the pixel size of an image's shortest side +__C.TRAIN.SCALES = (600,) + +# pickle or image +__C.TRAIN.FORMAT = '' # 'pickle' + +# Max pixel size of the longest side of a scaled input image +__C.TRAIN.MAX_SIZE = 800 + +# Images to use per minibatch +__C.TRAIN.IMS_PER_BATCH = 2 + +# Minibatch size (number of regions of interest [ROIs]) +__C.TRAIN.BATCH_SIZE = 128 + +# Fraction of minibatch that is labeled foreground (i.e. class > 0) +__C.TRAIN.FG_FRACTION = 0.25 + +# Overlap threshold for a ROI to be considered foreground (if >= FG_THRESH) +__C.TRAIN.FG_THRESH = 0.5 + +# Overlap threshold for a ROI to be considered background (class = 0 if +# overlap in [LO, HI)) +__C.TRAIN.BG_THRESH_HI = 0.5 +__C.TRAIN.BG_THRESH_LO = 0.1 + +# Use horizontally-flipped images during training? +__C.TRAIN.USE_FLIPPED = True + +# Train bounding-box regressors +__C.TRAIN.BBOX_REG = True + +# Overlap required between a ROI and ground-truth box in order for that ROI to +# be used as a bounding-box regression training example +__C.TRAIN.BBOX_THRESH = 0.5 + +# Iterations between snapshots +__C.TRAIN.SNAPSHOT_ITERS = 10000 + +# solver.prototxt specifies the snapshot path prefix, this adds an optional +# infix to yield the path: [_]_iters_XYZ.caffemodel +__C.TRAIN.SNAPSHOT_INFIX = '' + +# Use a prefetch thread in roi_data_layer.layer +# So far I haven't found this useful; likely more engineering work is required +__C.TRAIN.USE_PREFETCH = False + +# Normalize the targets (subtract empirical mean, divide by empirical stddev) +__C.TRAIN.BBOX_NORMALIZE_TARGETS = True +# Deprecated (inside weights) +__C.TRAIN.BBOX_INSIDE_WEIGHTS = (1.0, 1.0, 1.0, 1.0) +# Normalize the targets using "precomputed" (or made up) means and stdevs +# (BBOX_NORMALIZE_TARGETS must also be True) +__C.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED = False +__C.TRAIN.BBOX_NORMALIZE_MEANS = (0.0, 0.0, 0.0, 0.0) +__C.TRAIN.BBOX_NORMALIZE_STDS = (0.1, 0.1, 0.2, 0.2) + +__C.TRAIN.RPN_NORMALIZE_TARGETS = False +__C.TRAIN.RPN_NORMALIZE_MEANS = (0.0, 0.0, 0.0, 0.0) +__C.TRAIN.RPN_NORMALIZE_STDS = (0.1, 0.1, 0.2, 0.2) + +# Train using these proposals +__C.TRAIN.PROPOSAL_METHOD = 'selective_search' + +# Make minibatches from images that have similar aspect ratios (i.e. both +# tall and thin or both short and wide) in order to avoid wasting computation +# on zero-padding. +__C.TRAIN.ASPECT_GROUPING = True + +# Use RPN to detect objects +__C.TRAIN.HAS_RPN = False +# IOU >= thresh: positive example +__C.TRAIN.RPN_POSITIVE_OVERLAP = 0.7 +# IOU < thresh: negative example +__C.TRAIN.RPN_NEGATIVE_OVERLAP = 0.3 +# If an anchor statisfied by positive and negative conditions set to negative +__C.TRAIN.RPN_CLOBBER_POSITIVES = False +# Max number of foreground examples +__C.TRAIN.RPN_FG_FRACTION = 0.5 +# Total number of examples +__C.TRAIN.RPN_BATCHSIZE = 256 +# NMS threshold used on RPN proposals +__C.TRAIN.RPN_NMS_THRESH = 0.7 +# Number of top scoring boxes to keep before apply NMS to RPN proposals +__C.TRAIN.RPN_PRE_NMS_TOP_N = 12000 +# Number of top scoring boxes to keep after applying NMS to RPN proposals +__C.TRAIN.RPN_POST_NMS_TOP_N = 2000 +# Proposal height and width both need to be greater than RPN_MIN_SIZE (at orig image scale) +__C.TRAIN.RPN_MIN_SIZE = 16 +# Deprecated (outside weights) +__C.TRAIN.RPN_BBOX_INSIDE_WEIGHTS = (1.0, 1.0, 1.0, 1.0) +# Give the positive RPN examples weight of p * 1 / {num positives} +# and give negatives a weight of (1 - p) +# Set to -1.0 to use uniform example weighting +__C.TRAIN.RPN_POSITIVE_WEIGHT = -1.0 + +# whether use class aware box or not +__C.TRAIN.AGNOSTIC = False + +# +# Testing options +# + +__C.TEST = edict() + +# Scales to use during testing (can list multiple scales) +# Each scale is the pixel size of an image's shortest side +__C.TEST.SCALES = (600,) + +# pickle or image +__C.TEST.FORMAT = '' # 'pickle' + +# Max pixel size of the longest side of a scaled input image +__C.TEST.MAX_SIZE = 1000 + +# Overlap threshold used for non-maximum suppression (suppress boxes with +# IoU >= this threshold) +__C.TEST.NMS = 0.3 + +# Experimental: treat the (K+1) units in the cls_score layer as linear +# predictors (trained, eg, with one-vs-rest SVMs). +__C.TEST.SVM = False + +# Test using bounding-box regressors +__C.TEST.BBOX_REG = True + +# Propose boxes +__C.TEST.HAS_RPN = False + +# Test using these proposals +__C.TEST.PROPOSAL_METHOD = 'selective_search' + +## NMS threshold used on RPN proposals +__C.TEST.RPN_NMS_THRESH = 0.7 +## Number of top scoring boxes to keep before apply NMS to RPN proposals +__C.TEST.RPN_PRE_NMS_TOP_N = 6000 +## Number of top scoring boxes to keep after applying NMS to RPN proposals +__C.TEST.RPN_POST_NMS_TOP_N = 300 +# Proposal height and width both need to be greater than RPN_MIN_SIZE (at orig image scale) +__C.TEST.RPN_MIN_SIZE = 16 + +# whether use class aware box or not +__C.TEST.AGNOSTIC = False + + +# +# MISC +# + +# The mapping from image coordinates to feature map coordinates might cause +# some boxes that are distinct in image space to become identical in feature +# coordinates. If DEDUP_BOXES > 0, then DEDUP_BOXES is used as the scale factor +# for identifying duplicate boxes. +# 1/16 is correct for {Alex,Caffe}Net, VGG_CNN_M_1024, and VGG16 +__C.DEDUP_BOXES = 1./16. + +# Pixel mean values (BGR order) as a (1, 1, 3) array +# We use the same pixel mean for all networks even though it's not exactly what +# they were trained with +__C.PIXEL_MEANS = np.array([[[102.9801, 115.9465, 122.7717]]]) + +# For reproducibility +__C.RNG_SEED = 3 + +# A small number that's used many times +__C.EPS = 1e-14 + +# Root directory of project +__C.ROOT_DIR = osp.abspath(osp.join(osp.dirname(__file__), '..', '..')) + +# Data directory +__C.DATA_DIR = osp.abspath(osp.join(__C.ROOT_DIR, 'data')) + +# Model directory +__C.MODELS_DIR = osp.abspath(osp.join(__C.ROOT_DIR, '..', '..', 'models', 'intel_optimized_models', 'rfcn', 'pascal_voc')) + +# Name (or path to) the matlab executable +__C.MATLAB = 'matlab' + +# Place outputs under an experiments directory +__C.EXP_DIR = 'default' + +# Use GPU implementation of non-maximum suppression +__C.USE_GPU_NMS = False + +# Default GPU device id +__C.GPU_ID = 0 + + +def get_output_dir(imdb, net=None): + """Return the directory where experimental artifacts are placed. + If the directory does not exist, it is created. + + A canonical path is built using the name from an imdb and a network + (if not None). + """ + outdir = osp.abspath(osp.join(__C.ROOT_DIR, 'output', __C.EXP_DIR, imdb.name)) + if net is not None: + outdir = osp.join(outdir, net.name) + if not os.path.exists(outdir): + os.makedirs(outdir) + return outdir + +def _merge_a_into_b(a, b): + """Merge config dictionary a into config dictionary b, clobbering the + options in b whenever they are also specified in a. + """ + if type(a) is not edict: + return + + for k, v in a.iteritems(): + # a must specify keys that are in b + if not b.has_key(k): + raise KeyError('{} is not a valid config key'.format(k)) + + # the types must match, too + old_type = type(b[k]) + if old_type is not type(v): + if isinstance(b[k], np.ndarray): + v = np.array(v, dtype=b[k].dtype) + else: + raise ValueError(('Type mismatch ({} vs. {}) ' + 'for config key: {}').format(type(b[k]), + type(v), k)) + + # recursively merge dicts + if type(v) is edict: + try: + _merge_a_into_b(a[k], b[k]) + except: + print('Error under config key: {}'.format(k)) + raise + else: + b[k] = v + +def cfg_from_file(filename): + """Load a config file and merge it into the default options.""" + import yaml + with open(filename, 'r') as f: + yaml_cfg = edict(yaml.load(f)) + + _merge_a_into_b(yaml_cfg, __C) + +def cfg_from_list(cfg_list): + """Set config keys via list (e.g., from command line).""" + from ast import literal_eval + assert len(cfg_list) % 2 == 0 + for k, v in zip(cfg_list[0::2], cfg_list[1::2]): + key_list = k.split('.') + d = __C + for subkey in key_list[:-1]: + assert d.has_key(subkey) + d = d[subkey] + subkey = key_list[-1] + assert d.has_key(subkey) + try: + value = literal_eval(v) + except: + # handle the case when v is a string literal + value = v + assert type(value) == type(d[subkey]), \ + 'type {} does not match original type {}'.format( + type(value), type(d[subkey])) + d[subkey] = value diff --git a/examples/rfcn/lib/fast_rcnn/nms_wrapper.py b/examples/rfcn/lib/fast_rcnn/nms_wrapper.py new file mode 100644 index 000000000..a59485e69 --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/nms_wrapper.py @@ -0,0 +1,20 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +from fast_rcnn.config import cfg +#from nms.gpu_nms import gpu_nms +from nms.cpu_nms import cpu_nms + +def nms(dets, thresh, force_cpu=True): + """Dispatch to either CPU or GPU NMS implementations.""" + + if dets.shape[0] == 0: + return [] + if cfg.USE_GPU_NMS and not force_cpu: + return gpu_nms(dets, thresh, device_id=cfg.GPU_ID) + else: + return cpu_nms(dets, thresh) diff --git a/examples/rfcn/lib/fast_rcnn/test.py b/examples/rfcn/lib/fast_rcnn/test.py new file mode 100644 index 000000000..d12c3a866 --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/test.py @@ -0,0 +1,305 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Test a Fast R-CNN network on an imdb (image database).""" + +from fast_rcnn.config import cfg, get_output_dir +from fast_rcnn.bbox_transform import clip_boxes, bbox_transform_inv +import argparse +from utils.timer import Timer +import numpy as np +import cv2 +import caffe +from fast_rcnn.nms_wrapper import nms +import cPickle +import gzip +from utils.blob import im_list_to_blob +import os + +def _get_image_blob(im): + """Converts an image into a network input. + + Arguments: + im (ndarray): a color image in BGR order + + Returns: + blob (ndarray): a data blob holding an image pyramid + im_scale_factors (list): list of image scales (relative to im) used + in the image pyramid + """ + im_orig = im.astype(np.float32, copy=True) + im_orig -= cfg.PIXEL_MEANS + + im_shape = im_orig.shape + im_size_min = np.min(im_shape[0:2]) + im_size_max = np.max(im_shape[0:2]) + + processed_ims = [] + im_scale_factors = [] + + for target_size in cfg.TEST.SCALES: + im_scale = float(target_size) / float(im_size_min) + # Prevent the biggest axis from being more than MAX_SIZE + if np.round(im_scale * im_size_max) > cfg.TEST.MAX_SIZE: + im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max) + im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale, + interpolation=cv2.INTER_LINEAR) + im_scale_factors.append(im_scale) + processed_ims.append(im) + + # Create a blob to hold the input images + blob = im_list_to_blob(processed_ims) + + return blob, np.array(im_scale_factors) + +def _get_rois_blob(im_rois, im_scale_factors): + """Converts RoIs into network inputs. + + Arguments: + im_rois (ndarray): R x 4 matrix of RoIs in original image coordinates + im_scale_factors (list): scale factors as returned by _get_image_blob + + Returns: + blob (ndarray): R x 5 matrix of RoIs in the image pyramid + """ + rois, levels = _project_im_rois(im_rois, im_scale_factors) + rois_blob = np.hstack((levels, rois)) + return rois_blob.astype(np.float32, copy=False) + +def _project_im_rois(im_rois, scales): + """Project image RoIs into the image pyramid built by _get_image_blob. + + Arguments: + im_rois (ndarray): R x 4 matrix of RoIs in original image coordinates + scales (list): scale factors as returned by _get_image_blob + + Returns: + rois (ndarray): R x 4 matrix of projected RoI coordinates + levels (list): image pyramid levels used by each projected RoI + """ + im_rois = im_rois.astype(np.float, copy=False) + + if len(scales) > 1: + widths = im_rois[:, 2] - im_rois[:, 0] + 1 + heights = im_rois[:, 3] - im_rois[:, 1] + 1 + + areas = widths * heights + scaled_areas = areas[:, np.newaxis] * (scales[np.newaxis, :] ** 2) + diff_areas = np.abs(scaled_areas - 224 * 224) + levels = diff_areas.argmin(axis=1)[:, np.newaxis] + else: + levels = np.zeros((im_rois.shape[0], 1), dtype=np.int) + + rois = im_rois * scales[levels] + + return rois, levels + +def _get_blobs(im, rois): + """Convert an image and RoIs within that image into network inputs.""" + blobs = {'data' : None, 'rois' : None} + blobs['data'], im_scale_factors = _get_image_blob(im) + if not cfg.TEST.HAS_RPN: + blobs['rois'] = _get_rois_blob(rois, im_scale_factors) + return blobs, im_scale_factors + +def im_detect(net, im, boxes=None): + """Detect object classes in an image given object proposals. + + Arguments: + net (caffe.Net): Fast R-CNN network to use + im (ndarray): color image to test (in BGR order) + boxes (ndarray): R x 4 array of object proposals or None (for RPN) + + Returns: + scores (ndarray): R x K array of object class scores (K includes + background as object category 0) + boxes (ndarray): R x (4*K) array of predicted bounding boxes + """ + blobs, im_scales = _get_blobs(im, boxes) + + # When mapping from image ROIs to feature map ROIs, there's some aliasing + # (some distinct image ROIs get mapped to the same feature ROI). + # Here, we identify duplicate feature ROIs, so we only compute features + # on the unique subset. + if cfg.DEDUP_BOXES > 0 and not cfg.TEST.HAS_RPN: + v = np.array([1, 1e3, 1e6, 1e9, 1e12]) + hashes = np.round(blobs['rois'] * cfg.DEDUP_BOXES).dot(v) + _, index, inv_index = np.unique(hashes, return_index=True, + return_inverse=True) + blobs['rois'] = blobs['rois'][index, :] + boxes = boxes[index, :] + + if cfg.TEST.HAS_RPN: + im_blob = blobs['data'] + blobs['im_info'] = np.array( + [[im_blob.shape[2], im_blob.shape[3], im_scales[0]]], + dtype=np.float32) + + # reshape network inputs + net.blobs['data'].reshape(*(blobs['data'].shape)) + if cfg.TEST.HAS_RPN: + net.blobs['im_info'].reshape(*(blobs['im_info'].shape)) + else: + net.blobs['rois'].reshape(*(blobs['rois'].shape)) + + # do forward + forward_kwargs = {'data': blobs['data'].astype(np.float32, copy=False)} + if cfg.TEST.HAS_RPN: + forward_kwargs['im_info'] = blobs['im_info'].astype(np.float32, copy=False) + else: + forward_kwargs['rois'] = blobs['rois'].astype(np.float32, copy=False) + blobs_out = net.forward(**forward_kwargs) + + if cfg.TEST.HAS_RPN: + assert len(im_scales) == 1, "Only single-image batch implemented" + rois = net.blobs['rois'].data.copy() + # unscale back to raw image space + boxes = rois[:, 1:5] / im_scales[0] + + if cfg.TEST.SVM: + # use the raw scores before softmax under the assumption they + # were trained as linear SVMs + scores = net.blobs['cls_score'].data + else: + # use softmax estimated probabilities + scores = blobs_out['cls_prob'] + + if cfg.TEST.BBOX_REG: + # Apply bounding-box regression deltas + box_deltas = blobs_out['bbox_pred'] + pred_boxes = bbox_transform_inv(boxes, box_deltas) + pred_boxes = clip_boxes(pred_boxes, im.shape) + else: + # Simply repeat the boxes, once for each class + pred_boxes = np.tile(boxes, (1, scores.shape[1])) + + if cfg.DEDUP_BOXES > 0 and not cfg.TEST.HAS_RPN: + # Map scores and predictions back to the original set of boxes + scores = scores[inv_index, :] + pred_boxes = pred_boxes[inv_index, :] + + return scores, pred_boxes + +def vis_detections(im, class_name, dets, thresh=0.3): + """Visual debugging of detections.""" + import matplotlib.pyplot as plt + im = im[:, :, (2, 1, 0)] + for i in xrange(np.minimum(10, dets.shape[0])): + bbox = dets[i, :4] + score = dets[i, -1] + if score > thresh: + plt.cla() + plt.imshow(im) + plt.gca().add_patch( + plt.Rectangle((bbox[0], bbox[1]), + bbox[2] - bbox[0], + bbox[3] - bbox[1], fill=False, + edgecolor='g', linewidth=3) + ) + plt.title('{} {:.3f}'.format(class_name, score)) + plt.show() + +def apply_nms(all_boxes, thresh): + """Apply non-maximum suppression to all predicted boxes output by the + test_net method. + """ + num_classes = len(all_boxes) + num_images = len(all_boxes[0]) + nms_boxes = [[[] for _ in xrange(num_images)] + for _ in xrange(num_classes)] + for cls_ind in xrange(num_classes): + for im_ind in xrange(num_images): + dets = all_boxes[cls_ind][im_ind] + if dets == []: + continue + # CPU NMS is much faster than GPU NMS when the number of boxes + # is relative small (e.g., < 10k) + # TODO(rbg): autotune NMS dispatch + keep = nms(dets, thresh, force_cpu=True) + if len(keep) == 0: + continue + nms_boxes[cls_ind][im_ind] = dets[keep, :].copy() + return nms_boxes + +def test_net(net, imdb, max_per_image=400, thresh=-np.inf, vis=False): + """Test a Fast R-CNN network on an image database.""" + num_images = len(imdb.image_index) + # all detections are collected into: + # all_boxes[cls][image] = N x 5 array of detections in + # (x1, y1, x2, y2, score) + all_boxes = [[[] for _ in xrange(num_images)] + for _ in xrange(imdb.num_classes)] + + output_dir = get_output_dir(imdb, net) + + # timers + _t = {'im_detect' : Timer(), 'misc' : Timer()} + + if not cfg.TEST.HAS_RPN: + roidb = imdb.roidb + + for i in xrange(num_images): + # filter out any ground truth boxes + if cfg.TEST.HAS_RPN: + box_proposals = None + else: + # The roidb may contain ground-truth rois (for example, if the roidb + # comes from the training or val split). We only want to evaluate + # detection on the *non*-ground-truth rois. We select those the rois + # that have the gt_classes field set to 0, which means there's no + # ground truth. + box_proposals = roidb[i]['boxes'][roidb[i]['gt_classes'] == 0] + + im = None + if cfg.TEST.FORMAT == "pickle": + f = gzip.open(imdb.image_path_at(i), 'rb') + im = cPickle.load(f) + f.close() + else: + im = cv2.imread(imdb.image_path_at(i)) + _t['im_detect'].tic() + scores, boxes = im_detect(net, im, box_proposals) + _t['im_detect'].toc() + + _t['misc'].tic() + # skip j = 0, because it's the background class + for j in xrange(1, imdb.num_classes): + inds = np.where(scores[:, j] > thresh)[0] + cls_scores = scores[inds, j] + if cfg.TEST.AGNOSTIC: + cls_boxes = boxes[inds, 4:8] + else: + cls_boxes = boxes[inds, j*4:(j+1)*4] + cls_dets = np.hstack((cls_boxes, cls_scores[:, np.newaxis])) \ + .astype(np.float32, copy=False) + keep = nms(cls_dets, cfg.TEST.NMS) + cls_dets = cls_dets[keep, :] + if vis: + vis_detections(im, imdb.classes[j], cls_dets) + all_boxes[j][i] = cls_dets + + # Limit to max_per_image detections *over all classes* + if max_per_image > 0: + image_scores = np.hstack([all_boxes[j][i][:, -1] + for j in xrange(1, imdb.num_classes)]) + if len(image_scores) > max_per_image: + image_thresh = np.sort(image_scores)[-max_per_image] + for j in xrange(1, imdb.num_classes): + keep = np.where(all_boxes[j][i][:, -1] >= image_thresh)[0] + all_boxes[j][i] = all_boxes[j][i][keep, :] + _t['misc'].toc() + + print 'im_detect: {:d}/{:d} {:.3f}s {:.3f}s' \ + .format(i + 1, num_images, _t['im_detect'].average_time, + _t['misc'].average_time) + + det_file = os.path.join(output_dir, 'detections.pkl') + with open(det_file, 'wb') as f: + cPickle.dump(all_boxes, f, cPickle.HIGHEST_PROTOCOL) + + print 'Evaluating detections' + imdb.evaluate_detections(all_boxes, output_dir) diff --git a/examples/rfcn/lib/fast_rcnn/train.py b/examples/rfcn/lib/fast_rcnn/train.py new file mode 100644 index 000000000..e645f320c --- /dev/null +++ b/examples/rfcn/lib/fast_rcnn/train.py @@ -0,0 +1,210 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Train a Fast R-CNN network.""" + +import caffe +from fast_rcnn.config import cfg +import roi_data_layer.roidb as rdl_roidb +from utils.timer import Timer +import numpy as np +import os + +from caffe.proto import caffe_pb2 +import google.protobuf as pb2 +import google.protobuf.text_format + +class SolverWrapper(object): + """A simple wrapper around Caffe's solver. + This wrapper gives us control over he snapshotting process, which we + use to unnormalize the learned bounding-box regression weights. + """ + + def __init__(self, solver_prototxt, roidb, output_dir, + pretrained_model=None): + """Initialize the SolverWrapper.""" + self.output_dir = output_dir + + if (cfg.TRAIN.HAS_RPN and cfg.TRAIN.BBOX_REG and + cfg.TRAIN.BBOX_NORMALIZE_TARGETS): + # RPN can only use precomputed normalization because there are no + # fixed statistics to compute a priori + assert cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED + + if cfg.TRAIN.BBOX_REG: + print 'Computing bounding-box regression targets...' + self.bbox_means, self.bbox_stds = \ + rdl_roidb.add_bbox_regression_targets(roidb) + print 'done' + + self.solver = caffe.SGDSolver(solver_prototxt) + if pretrained_model is not None: + print ('Loading pretrained model ' + 'weights from {:s}').format(pretrained_model) + self.solver.net.copy_from(pretrained_model) + + self.solver_param = caffe_pb2.SolverParameter() + with open(solver_prototxt, 'rt') as f: + pb2.text_format.Merge(f.read(), self.solver_param) + + self.solver.net.layers[0].set_roidb(roidb) + + def snapshot(self): + """Take a snapshot of the network after unnormalizing the learned + bounding-box regression weights. This enables easy use at test-time. + """ + net = self.solver.net + + scale_bbox_params_faster_rcnn = (cfg.TRAIN.BBOX_REG and + cfg.TRAIN.BBOX_NORMALIZE_TARGETS and + net.params.has_key('bbox_pred')) + + scale_bbox_params_rfcn = (cfg.TRAIN.BBOX_REG and + cfg.TRAIN.BBOX_NORMALIZE_TARGETS and + net.params.has_key('rfcn_bbox')) + + scale_bbox_params_rpn = (cfg.TRAIN.RPN_NORMALIZE_TARGETS and + net.params.has_key('rpn_bbox_pred')) + + if scale_bbox_params_faster_rcnn: + # save original values + orig_0 = net.params['bbox_pred'][0].data.copy() + orig_1 = net.params['bbox_pred'][1].data.copy() + + # scale and shift with bbox reg unnormalization; then save snapshot + net.params['bbox_pred'][0].data[...] = \ + (net.params['bbox_pred'][0].data * + self.bbox_stds[:, np.newaxis]) + net.params['bbox_pred'][1].data[...] = \ + (net.params['bbox_pred'][1].data * + self.bbox_stds + self.bbox_means) + + if scale_bbox_params_rpn: + rpn_orig_0 = net.params['rpn_bbox_pred'][0].data.copy() + rpn_orig_1 = net.params['rpn_bbox_pred'][1].data.copy() + num_anchor = rpn_orig_0.shape[0] / 4 + # scale and shift with bbox reg unnormalization; then save snapshot + self.rpn_means = np.tile(np.asarray(cfg.TRAIN.RPN_NORMALIZE_MEANS), + num_anchor) + self.rpn_stds = np.tile(np.asarray(cfg.TRAIN.RPN_NORMALIZE_STDS), + num_anchor) + net.params['rpn_bbox_pred'][0].data[...] = \ + (net.params['rpn_bbox_pred'][0].data * + self.rpn_stds[:, np.newaxis, np.newaxis, np.newaxis]) + net.params['rpn_bbox_pred'][1].data[...] = \ + (net.params['rpn_bbox_pred'][1].data * + self.rpn_stds + self.rpn_means) + + if scale_bbox_params_rfcn: + # save original values + orig_0 = net.params['rfcn_bbox'][0].data.copy() + orig_1 = net.params['rfcn_bbox'][1].data.copy() + repeat = orig_1.shape[0] / self.bbox_means.shape[0] + + # scale and shift with bbox reg unnormalization; then save snapshot + net.params['rfcn_bbox'][0].data[...] = \ + (net.params['rfcn_bbox'][0].data * + np.repeat(self.bbox_stds, repeat).reshape((orig_1.shape[0], 1, 1, 1))) + net.params['rfcn_bbox'][1].data[...] = \ + (net.params['rfcn_bbox'][1].data * + np.repeat(self.bbox_stds, repeat) + np.repeat(self.bbox_means, repeat)) + + infix = ('_' + cfg.TRAIN.SNAPSHOT_INFIX + if cfg.TRAIN.SNAPSHOT_INFIX != '' else '') + filename = (self.solver_param.snapshot_prefix + infix + + '_iter_{:d}'.format(self.solver.iter) + '.caffemodel') + filename = os.path.join(self.output_dir, filename) + + net.save(str(filename)) + print 'Wrote snapshot to: {:s}'.format(filename) + + if scale_bbox_params_faster_rcnn: + # restore net to original state + net.params['bbox_pred'][0].data[...] = orig_0 + net.params['bbox_pred'][1].data[...] = orig_1 + if scale_bbox_params_rfcn: + # restore net to original state + net.params['rfcn_bbox'][0].data[...] = orig_0 + net.params['rfcn_bbox'][1].data[...] = orig_1 + if scale_bbox_params_rpn: + # restore net to original state + net.params['rpn_bbox_pred'][0].data[...] = rpn_orig_0 + net.params['rpn_bbox_pred'][1].data[...] = rpn_orig_1 + + return filename + + def train_model(self, max_iters): + """Network training loop.""" + last_snapshot_iter = -1 + timer = Timer() + model_paths = [] + while self.solver.iter < max_iters: + # Make one SGD update + timer.tic() + self.solver.step(1) + timer.toc() + if self.solver.iter % (10 * self.solver_param.display) == 0: + print 'speed: {:.3f}s / iter'.format(timer.average_time) + print 'fps: {:.3f}'.format(1.0 / timer.average_time) + + if self.solver.iter % cfg.TRAIN.SNAPSHOT_ITERS == 0: + last_snapshot_iter = self.solver.iter + model_paths.append(self.snapshot()) + + if last_snapshot_iter != self.solver.iter: + model_paths.append(self.snapshot()) + return model_paths + +def get_training_roidb(imdb): + """Returns a roidb (Region of Interest database) for use in training.""" + if cfg.TRAIN.USE_FLIPPED: + print 'Appending horizontally-flipped training examples...' + imdb.append_flipped_images() + print 'done' + + print 'Preparing training data...' + rdl_roidb.prepare_roidb(imdb) + print 'done' + + return imdb.roidb + +def filter_roidb(roidb): + """Remove roidb entries that have no usable RoIs.""" + + def is_valid(entry): + # Valid images have: + # (1) At least one foreground RoI OR + # (2) At least one background RoI + overlaps = entry['max_overlaps'] + # find boxes with sufficient overlap + fg_inds = np.where(overlaps >= cfg.TRAIN.FG_THRESH)[0] + # Select background RoIs as those within [BG_THRESH_LO, BG_THRESH_HI) + bg_inds = np.where((overlaps < cfg.TRAIN.BG_THRESH_HI) & + (overlaps >= cfg.TRAIN.BG_THRESH_LO))[0] + # image is only valid if such boxes exist + valid = len(fg_inds) > 0 or len(bg_inds) > 0 + return valid + + num = len(roidb) + filtered_roidb = [entry for entry in roidb if is_valid(entry)] + num_after = len(filtered_roidb) + print 'Filtered {} roidb entries: {} -> {}'.format(num - num_after, + num, num_after) + return filtered_roidb + +def train_net(solver_prototxt, roidb, output_dir, + pretrained_model=None, max_iters=40000): + """Train a Fast R-CNN network.""" + + roidb = filter_roidb(roidb) + sw = SolverWrapper(solver_prototxt, roidb, output_dir, + pretrained_model=pretrained_model) + + print 'Solving...' + model_paths = sw.train_model(max_iters) + print 'done solving' + return model_paths diff --git a/examples/rfcn/lib/nms/__init__.py b/examples/rfcn/lib/nms/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/rfcn/lib/nms/cpu_nms.pyx b/examples/rfcn/lib/nms/cpu_nms.pyx new file mode 100644 index 000000000..625c42df3 --- /dev/null +++ b/examples/rfcn/lib/nms/cpu_nms.pyx @@ -0,0 +1,91 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np +cimport numpy as np +cimport cython +cimport openmp + +from cython.parallel cimport prange +from cython.parallel cimport parallel + +cdef inline np.float32_t max(np.float32_t a, np.float32_t b) nogil: + return a if a >= b else b + +cdef inline np.float32_t min(np.float32_t a, np.float32_t b) nogil: + return a if a <= b else b + +cdef inline np.int_t thresholding(np.float32_t ovr, np.float32_t thresh) nogil: + return 1 if ovr >= thresh else 0 + +import os +from multiprocessing import cpu_count +cdef int set_num = 0 +try: + set_num = os.environ["OMP_NUM_THREADS"] +except: + set_num = cpu_count() / 2 + +@cython.boundscheck(False) +@cython.wraparound(False) +def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh): + cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0] + cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1] + cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2] + cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3] + cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4] + + cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1) + cdef np.ndarray[np.int_t, ndim=1] order = scores.argsort()[::-1] + + cdef int ndets = dets.shape[0] + cdef np.ndarray[np.int_t, ndim=1] suppressed = \ + np.zeros((ndets), dtype=np.int) + + # nominal indices + cdef int _i, _j + # sorted indices + cdef int i, j + # temp variables for box i's (the box currently under consideration) + cdef np.float32_t ix1, iy1, ix2, iy2, iarea + # variables for computing overlap with box j (lower scoring box) + cdef np.float32_t xx1, yy1, xx2, yy2 + cdef np.float32_t w, h + cdef np.float32_t inter, ovr + cdef np.float32_t threshc = thresh + + global set_num + + keep = [] + for _i in range(ndets): + i = order[_i] + if suppressed[i] == 1: + continue + keep.append(i) + ix1 = x1[i] + iy1 = y1[i] + ix2 = x2[i] + iy2 = y2[i] + iarea = areas[i] + thread_num = set_num if (ndets - _i - 1) > set_num else (ndets - _i - 1) + if thread_num == 0: + continue + with nogil: + for _j in prange(_i + 1, ndets, schedule = 'dynamic', num_threads = thread_num): + j = order[_j] + if suppressed[j] == 0: + xx1 = max(ix1, x1[j]) + yy1 = max(iy1, y1[j]) + xx2 = min(ix2, x2[j]) + yy2 = min(iy2, y2[j]) + w = max(0.0, xx2 - xx1 + 1) + h = max(0.0, yy2 - yy1 + 1) + inter = w * h + ovr = inter / (iarea + areas[j] - inter) + suppressed[j] = thresholding(ovr, threshc) + + return keep diff --git a/examples/rfcn/lib/nms/gpu_nms.hpp b/examples/rfcn/lib/nms/gpu_nms.hpp new file mode 100644 index 000000000..68b6d42cd --- /dev/null +++ b/examples/rfcn/lib/nms/gpu_nms.hpp @@ -0,0 +1,2 @@ +void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num, + int boxes_dim, float nms_overlap_thresh, int device_id); diff --git a/examples/rfcn/lib/nms/gpu_nms.pyx b/examples/rfcn/lib/nms/gpu_nms.pyx new file mode 100644 index 000000000..59d84afe9 --- /dev/null +++ b/examples/rfcn/lib/nms/gpu_nms.pyx @@ -0,0 +1,31 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np +cimport numpy as np + +assert sizeof(int) == sizeof(np.int32_t) + +cdef extern from "gpu_nms.hpp": + void _nms(np.int32_t*, int*, np.float32_t*, int, int, float, int) + +def gpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh, + np.int32_t device_id=0): + cdef int boxes_num = dets.shape[0] + cdef int boxes_dim = dets.shape[1] + cdef int num_out + cdef np.ndarray[np.int32_t, ndim=1] \ + keep = np.zeros(boxes_num, dtype=np.int32) + cdef np.ndarray[np.float32_t, ndim=1] \ + scores = dets[:, 4] + cdef np.ndarray[np.int_t, ndim=1] \ + order = scores.argsort()[::-1] + cdef np.ndarray[np.float32_t, ndim=2] \ + sorted_dets = dets[order, :] + _nms(&keep[0], &num_out, &sorted_dets[0, 0], boxes_num, boxes_dim, thresh, device_id) + keep = keep[:num_out] + return list(order[keep]) diff --git a/examples/rfcn/lib/nms/nms_kernel.cu b/examples/rfcn/lib/nms/nms_kernel.cu new file mode 100644 index 000000000..038a59012 --- /dev/null +++ b/examples/rfcn/lib/nms/nms_kernel.cu @@ -0,0 +1,144 @@ +// ------------------------------------------------------------------ +// Faster R-CNN +// Copyright (c) 2015 Microsoft +// Licensed under The MIT License [see fast-rcnn/LICENSE for details] +// Written by Shaoqing Ren +// ------------------------------------------------------------------ + +#include "gpu_nms.hpp" +#include +#include + +#define CUDA_CHECK(condition) \ + /* Code block avoids redefinition of cudaError_t error */ \ + do { \ + cudaError_t error = condition; \ + if (error != cudaSuccess) { \ + std::cout << cudaGetErrorString(error) << std::endl; \ + } \ + } while (0) + +#define DIVUP(m,n) ((m) / (n) + ((m) % (n) > 0)) +int const threadsPerBlock = sizeof(unsigned long long) * 8; + +__device__ inline float devIoU(float const * const a, float const * const b) { + float left = max(a[0], b[0]), right = min(a[2], b[2]); + float top = max(a[1], b[1]), bottom = min(a[3], b[3]); + float width = max(right - left + 1, 0.f), height = max(bottom - top + 1, 0.f); + float interS = width * height; + float Sa = (a[2] - a[0] + 1) * (a[3] - a[1] + 1); + float Sb = (b[2] - b[0] + 1) * (b[3] - b[1] + 1); + return interS / (Sa + Sb - interS); +} + +__global__ void nms_kernel(const int n_boxes, const float nms_overlap_thresh, + const float *dev_boxes, unsigned long long *dev_mask) { + const int row_start = blockIdx.y; + const int col_start = blockIdx.x; + + // if (row_start > col_start) return; + + const int row_size = + min(n_boxes - row_start * threadsPerBlock, threadsPerBlock); + const int col_size = + min(n_boxes - col_start * threadsPerBlock, threadsPerBlock); + + __shared__ float block_boxes[threadsPerBlock * 5]; + if (threadIdx.x < col_size) { + block_boxes[threadIdx.x * 5 + 0] = + dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 0]; + block_boxes[threadIdx.x * 5 + 1] = + dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 1]; + block_boxes[threadIdx.x * 5 + 2] = + dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 2]; + block_boxes[threadIdx.x * 5 + 3] = + dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 3]; + block_boxes[threadIdx.x * 5 + 4] = + dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 4]; + } + __syncthreads(); + + if (threadIdx.x < row_size) { + const int cur_box_idx = threadsPerBlock * row_start + threadIdx.x; + const float *cur_box = dev_boxes + cur_box_idx * 5; + int i = 0; + unsigned long long t = 0; + int start = 0; + if (row_start == col_start) { + start = threadIdx.x + 1; + } + for (i = start; i < col_size; i++) { + if (devIoU(cur_box, block_boxes + i * 5) > nms_overlap_thresh) { + t |= 1ULL << i; + } + } + const int col_blocks = DIVUP(n_boxes, threadsPerBlock); + dev_mask[cur_box_idx * col_blocks + col_start] = t; + } +} + +void _set_device(int device_id) { + int current_device; + CUDA_CHECK(cudaGetDevice(¤t_device)); + if (current_device == device_id) { + return; + } + // The call to cudaSetDevice must come before any calls to Get, which + // may perform initialization using the GPU. + CUDA_CHECK(cudaSetDevice(device_id)); +} + +void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num, + int boxes_dim, float nms_overlap_thresh, int device_id) { + _set_device(device_id); + + float* boxes_dev = NULL; + unsigned long long* mask_dev = NULL; + + const int col_blocks = DIVUP(boxes_num, threadsPerBlock); + + CUDA_CHECK(cudaMalloc(&boxes_dev, + boxes_num * boxes_dim * sizeof(float))); + CUDA_CHECK(cudaMemcpy(boxes_dev, + boxes_host, + boxes_num * boxes_dim * sizeof(float), + cudaMemcpyHostToDevice)); + + CUDA_CHECK(cudaMalloc(&mask_dev, + boxes_num * col_blocks * sizeof(unsigned long long))); + + dim3 blocks(DIVUP(boxes_num, threadsPerBlock), + DIVUP(boxes_num, threadsPerBlock)); + dim3 threads(threadsPerBlock); + nms_kernel<<>>(boxes_num, + nms_overlap_thresh, + boxes_dev, + mask_dev); + + std::vector mask_host(boxes_num * col_blocks); + CUDA_CHECK(cudaMemcpy(&mask_host[0], + mask_dev, + sizeof(unsigned long long) * boxes_num * col_blocks, + cudaMemcpyDeviceToHost)); + + std::vector remv(col_blocks); + memset(&remv[0], 0, sizeof(unsigned long long) * col_blocks); + + int num_to_keep = 0; + for (int i = 0; i < boxes_num; i++) { + int nblock = i / threadsPerBlock; + int inblock = i % threadsPerBlock; + + if (!(remv[nblock] & (1ULL << inblock))) { + keep_out[num_to_keep++] = i; + unsigned long long *p = &mask_host[0] + i * col_blocks; + for (int j = nblock; j < col_blocks; j++) { + remv[j] |= p[j]; + } + } + } + *num_out = num_to_keep; + + CUDA_CHECK(cudaFree(boxes_dev)); + CUDA_CHECK(cudaFree(mask_dev)); +} diff --git a/examples/rfcn/lib/nms/py_cpu_nms.py b/examples/rfcn/lib/nms/py_cpu_nms.py new file mode 100644 index 000000000..54e7b25fe --- /dev/null +++ b/examples/rfcn/lib/nms/py_cpu_nms.py @@ -0,0 +1,38 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np + +def py_cpu_nms(dets, thresh): + """Pure Python NMS baseline.""" + x1 = dets[:, 0] + y1 = dets[:, 1] + x2 = dets[:, 2] + y2 = dets[:, 3] + scores = dets[:, 4] + + areas = (x2 - x1 + 1) * (y2 - y1 + 1) + order = scores.argsort()[::-1] + + keep = [] + while order.size > 0: + i = order[0] + keep.append(i) + xx1 = np.maximum(x1[i], x1[order[1:]]) + yy1 = np.maximum(y1[i], y1[order[1:]]) + xx2 = np.minimum(x2[i], x2[order[1:]]) + yy2 = np.minimum(y2[i], y2[order[1:]]) + + w = np.maximum(0.0, xx2 - xx1 + 1) + h = np.maximum(0.0, yy2 - yy1 + 1) + inter = w * h + ovr = inter / (areas[i] + areas[order[1:]] - inter) + + inds = np.where(ovr <= thresh)[0] + order = order[inds + 1] + + return keep diff --git a/examples/rfcn/lib/pycocotools/UPSTREAM_REV b/examples/rfcn/lib/pycocotools/UPSTREAM_REV new file mode 100644 index 000000000..706219b77 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/UPSTREAM_REV @@ -0,0 +1 @@ +https://github.com/pdollar/coco/commit/3ac47c77ebd5a1ed4254a98b7fbf2ef4765a3574 diff --git a/examples/rfcn/lib/pycocotools/__init__.py b/examples/rfcn/lib/pycocotools/__init__.py new file mode 100644 index 000000000..3f7d85bba --- /dev/null +++ b/examples/rfcn/lib/pycocotools/__init__.py @@ -0,0 +1 @@ +__author__ = 'tylin' diff --git a/examples/rfcn/lib/pycocotools/_mask.c b/examples/rfcn/lib/pycocotools/_mask.c new file mode 100644 index 000000000..e47a984fc --- /dev/null +++ b/examples/rfcn/lib/pycocotools/_mask.c @@ -0,0 +1,15550 @@ +/* Generated by Cython 0.25.2 */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) + #error Cython requires Python 2.6+ or Python 3.2+. +#else +#define CYTHON_ABI "0_25_2" +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + + +#define __PYX_ERR(f_index, lineno, Ln_error) \ +{ \ + __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ +} + +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__pycocotools___mask +#define __PYX_HAVE_API__pycocotools___mask +#include +#include +#include +#include "numpy/arrayobject.h" +#include "numpy/ufuncobject.h" +#include "maskApi.h" +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#ifdef PYREX_WITHOUT_ASSERTIONS +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) && defined (_M_X64) + #define __Pyx_sst_abs(value) _abs64(value) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#if PY_MAJOR_VERSION < 3 +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#else +#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen +#endif +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ + +static PyObject *__pyx_m; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + +/* Header.proto */ +#if !defined(CYTHON_CCOMPLEX) + #if defined(__cplusplus) + #define CYTHON_CCOMPLEX 1 + #elif defined(_Complex_I) + #define CYTHON_CCOMPLEX 1 + #else + #define CYTHON_CCOMPLEX 0 + #endif +#endif +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #include + #else + #include + #endif +#endif +#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) + #undef _Complex_I + #define _Complex_I 1.0fj +#endif + + +static const char *__pyx_f[] = { + "pycocotools/_mask.pyx", + "__init__.pxd", + "type.pxd", +}; +/* BufferFormatStructs.proto */ +#define IS_UNSIGNED(type) (((type) -1) > 0) +struct __Pyx_StructField_; +#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) +typedef struct { + const char* name; + struct __Pyx_StructField_* fields; + size_t size; + size_t arraysize[8]; + int ndim; + char typegroup; + char is_unsigned; + int flags; +} __Pyx_TypeInfo; +typedef struct __Pyx_StructField_ { + __Pyx_TypeInfo* type; + const char* name; + size_t offset; +} __Pyx_StructField; +typedef struct { + __Pyx_StructField* field; + size_t parent_offset; +} __Pyx_BufFmt_StackElem; +typedef struct { + __Pyx_StructField root; + __Pyx_BufFmt_StackElem* head; + size_t fmt_offset; + size_t new_count, enc_count; + size_t struct_alignment; + int is_complex; + char enc_type; + char new_packmode; + char enc_packmode; + char is_valid_array; +} __Pyx_BufFmt_Context; + + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":725 + * # in Cython to enable them only on the right systems. + * + * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + */ +typedef npy_int8 __pyx_t_5numpy_int8_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":726 + * + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t + */ +typedef npy_int16 __pyx_t_5numpy_int16_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":727 + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< + * ctypedef npy_int64 int64_t + * #ctypedef npy_int96 int96_t + */ +typedef npy_int32 __pyx_t_5numpy_int32_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":728 + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< + * #ctypedef npy_int96 int96_t + * #ctypedef npy_int128 int128_t + */ +typedef npy_int64 __pyx_t_5numpy_int64_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732 + * #ctypedef npy_int128 int128_t + * + * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + */ +typedef npy_uint8 __pyx_t_5numpy_uint8_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733 + * + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t + */ +typedef npy_uint16 __pyx_t_5numpy_uint16_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":734 + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< + * ctypedef npy_uint64 uint64_t + * #ctypedef npy_uint96 uint96_t + */ +typedef npy_uint32 __pyx_t_5numpy_uint32_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":735 + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< + * #ctypedef npy_uint96 uint96_t + * #ctypedef npy_uint128 uint128_t + */ +typedef npy_uint64 __pyx_t_5numpy_uint64_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739 + * #ctypedef npy_uint128 uint128_t + * + * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< + * ctypedef npy_float64 float64_t + * #ctypedef npy_float80 float80_t + */ +typedef npy_float32 __pyx_t_5numpy_float32_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740 + * + * ctypedef npy_float32 float32_t + * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< + * #ctypedef npy_float80 float80_t + * #ctypedef npy_float128 float128_t + */ +typedef npy_float64 __pyx_t_5numpy_float64_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":749 + * # The int types are mapped a bit surprising -- + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t + */ +typedef npy_long __pyx_t_5numpy_int_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":750 + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong longlong_t + * + */ +typedef npy_longlong __pyx_t_5numpy_long_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":751 + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_ulong uint_t + */ +typedef npy_longlong __pyx_t_5numpy_longlong_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":753 + * ctypedef npy_longlong longlong_t + * + * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t + */ +typedef npy_ulong __pyx_t_5numpy_uint_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754 + * + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulonglong_t + * + */ +typedef npy_ulonglong __pyx_t_5numpy_ulong_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755 + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_intp intp_t + */ +typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":757 + * ctypedef npy_ulonglong ulonglong_t + * + * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< + * ctypedef npy_uintp uintp_t + * + */ +typedef npy_intp __pyx_t_5numpy_intp_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758 + * + * ctypedef npy_intp intp_t + * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< + * + * ctypedef npy_double float_t + */ +typedef npy_uintp __pyx_t_5numpy_uintp_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760 + * ctypedef npy_uintp uintp_t + * + * ctypedef npy_double float_t # <<<<<<<<<<<<<< + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t + */ +typedef npy_double __pyx_t_5numpy_float_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":761 + * + * ctypedef npy_double float_t + * ctypedef npy_double double_t # <<<<<<<<<<<<<< + * ctypedef npy_longdouble longdouble_t + * + */ +typedef npy_double __pyx_t_5numpy_double_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762 + * ctypedef npy_double float_t + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cfloat cfloat_t + */ +typedef npy_longdouble __pyx_t_5numpy_longdouble_t; +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< float > __pyx_t_float_complex; + #else + typedef float _Complex __pyx_t_float_complex; + #endif +#else + typedef struct { float real, imag; } __pyx_t_float_complex; +#endif +static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); + +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< double > __pyx_t_double_complex; + #else + typedef double _Complex __pyx_t_double_complex; + #endif +#else + typedef struct { double real, imag; } __pyx_t_double_complex; +#endif +static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); + + +/*--- Type declarations ---*/ +struct __pyx_obj_11pycocotools_5_mask_RLEs; +struct __pyx_obj_11pycocotools_5_mask_Masks; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":764 + * ctypedef npy_longdouble longdouble_t + * + * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t + */ +typedef npy_cfloat __pyx_t_5numpy_cfloat_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765 + * + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< + * ctypedef npy_clongdouble clongdouble_t + * + */ +typedef npy_cdouble __pyx_t_5numpy_cdouble_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766 + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cdouble complex_t + */ +typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":768 + * ctypedef npy_clongdouble clongdouble_t + * + * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew1(a): + */ +typedef npy_cdouble __pyx_t_5numpy_complex_t; + +/* "pycocotools/_mask.pyx":53 + * # python class to wrap RLE array in C + * # the class handles the memory allocation and deallocation + * cdef class RLEs: # <<<<<<<<<<<<<< + * cdef RLE *_R + * cdef siz _n + */ +struct __pyx_obj_11pycocotools_5_mask_RLEs { + PyObject_HEAD + RLE *_R; + siz _n; +}; + + +/* "pycocotools/_mask.pyx":74 + * # python class to wrap Mask array in C + * # the class handles the memory allocation and deallocation + * cdef class Masks: # <<<<<<<<<<<<<< + * cdef byte *_mask + * cdef siz _h + */ +struct __pyx_obj_11pycocotools_5_mask_Masks { + PyObject_HEAD + byte *_mask; + siz _h; + siz _w; + siz _n; +}; + + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* ArgTypeTest.proto */ +static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, + const char *name, int exact); + +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + Py_SIZE(list) = len+1; + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* BufferFormatCheck.proto */ +static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, + __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); +static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type); // PROTO + +/* GetModuleGlobalName.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); + +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); +#else +#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ + PyObject_RichCompare(op1, op2, Py_EQ) + #endif + +/* ListCompAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len)) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + Py_SIZE(list) = len+1; + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); + +/* CythonFunction.proto */ +#define __Pyx_CyFunction_USED 1 +#include +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { + PyCFunctionObject func; +#if PY_VERSION_HEX < 0x030500A0 + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; + PyObject *func_classobj; + void *defaults; + int defaults_pyobjects; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; +} __pyx_CyFunctionObject; +static PyTypeObject *__pyx_CyFunctionType = 0; +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ + __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) +static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *self, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(void); + +/* BufferFallbackError.proto */ +static void __Pyx_RaiseBufferFallbackError(void); + +/* None.proto */ +static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); + +/* BufferIndexError.proto */ +static void __Pyx_RaiseBufferIndexError(int axis); + +#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) +/* DictGetItem.proto */ +#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + value = PyDict_GetItemWithError(d, key); + if (unlikely(!value)) { + if (!PyErr_Occurred()) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) + PyErr_SetObject(PyExc_KeyError, args); + Py_XDECREF(args); + } + return NULL; + } + Py_INCREF(value); + return value; +} +#else + #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) +#endif + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* BufferStructDeclare.proto */ +typedef struct { + Py_ssize_t shape, strides, suboffsets; +} __Pyx_Buf_DimInfo; +typedef struct { + size_t refcount; + Py_buffer pybuffer; +} __Pyx_Buffer; +typedef struct { + __Pyx_Buffer *rcbuffer; + char *data; + __Pyx_Buf_DimInfo diminfo[8]; +} __Pyx_LocalBuf_ND; + +#if PY_MAJOR_VERSION < 3 + static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); + static void __Pyx_ReleaseBuffer(Py_buffer *view); +#else + #define __Pyx_GetBuffer PyObject_GetBuffer + #define __Pyx_ReleaseBuffer PyBuffer_Release +#endif + + +/* None.proto */ +static Py_ssize_t __Pyx_zeros[] = {0, 0, 0, 0, 0, 0, 0, 0}; +static Py_ssize_t __Pyx_minusones[] = {-1, -1, -1, -1, -1, -1, -1, -1}; + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_siz(siz value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value); + +/* RealImag.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #define __Pyx_CREAL(z) ((z).real()) + #define __Pyx_CIMAG(z) ((z).imag()) + #else + #define __Pyx_CREAL(z) (__real__(z)) + #define __Pyx_CIMAG(z) (__imag__(z)) + #endif +#else + #define __Pyx_CREAL(z) ((z).real) + #define __Pyx_CIMAG(z) ((z).imag) +#endif +#if defined(__cplusplus) && CYTHON_CCOMPLEX\ + && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) + #define __Pyx_SET_CREAL(z,x) ((z).real(x)) + #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) +#else + #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) + #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_float(a, b) ((a)==(b)) + #define __Pyx_c_sum_float(a, b) ((a)+(b)) + #define __Pyx_c_diff_float(a, b) ((a)-(b)) + #define __Pyx_c_prod_float(a, b) ((a)*(b)) + #define __Pyx_c_quot_float(a, b) ((a)/(b)) + #define __Pyx_c_neg_float(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_float(z) ((z)==(float)0) + #define __Pyx_c_conj_float(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_float(z) (::std::abs(z)) + #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_float(z) ((z)==0) + #define __Pyx_c_conj_float(z) (conjf(z)) + #if 1 + #define __Pyx_c_abs_float(z) (cabsf(z)) + #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); + #endif +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_double(a, b) ((a)==(b)) + #define __Pyx_c_sum_double(a, b) ((a)+(b)) + #define __Pyx_c_diff_double(a, b) ((a)-(b)) + #define __Pyx_c_prod_double(a, b) ((a)*(b)) + #define __Pyx_c_quot_double(a, b) ((a)/(b)) + #define __Pyx_c_neg_double(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_double(z) ((z)==(double)0) + #define __Pyx_c_conj_double(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (::std::abs(z)) + #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_double(z) ((z)==0) + #define __Pyx_c_conj_double(z) (conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (cabs(z)) + #define __Pyx_c_pow_double(a, b) (cpow(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); + #endif +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE siz __Pyx_PyInt_As_siz(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* PyIdentifierFromString.proto */ +#if !defined(__Pyx_PyIdentifier_FromString) +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) +#else + #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) +#endif +#endif + +/* ModuleImport.proto */ +static PyObject *__Pyx_ImportModule(const char *name); + +/* TypeImport.proto */ +static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'cpython.buffer' */ + +/* Module declarations from 'libc.string' */ + +/* Module declarations from 'libc.stdio' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.type' */ +static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; + +/* Module declarations from 'cpython' */ + +/* Module declarations from 'cpython.object' */ + +/* Module declarations from 'cpython.ref' */ + +/* Module declarations from 'libc.stdlib' */ + +/* Module declarations from 'numpy' */ + +/* Module declarations from 'numpy' */ +static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; +static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; +static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; +static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; +static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; +static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/ +static CYTHON_INLINE int __pyx_f_5numpy_import_array(void); /*proto*/ + +/* Module declarations from 'pycocotools._mask' */ +static PyTypeObject *__pyx_ptype_11pycocotools_5_mask_RLEs = 0; +static PyTypeObject *__pyx_ptype_11pycocotools_5_mask_Masks = 0; +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t = { "uint8_t", NULL, sizeof(__pyx_t_5numpy_uint8_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint8_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint8_t), 0 }; +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_double_t = { "double_t", NULL, sizeof(__pyx_t_5numpy_double_t), { 0 }, 0, 'R', 0, 0 }; +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t = { "uint32_t", NULL, sizeof(__pyx_t_5numpy_uint32_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint32_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint32_t), 0 }; +#define __Pyx_MODULE_NAME "pycocotools._mask" +int __pyx_module_is_main_pycocotools___mask = 0; + +/* Implementation of 'pycocotools._mask' */ +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_AttributeError; +static PyObject *__pyx_builtin_enumerate; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_RuntimeError; +static PyObject *__pyx_builtin_ImportError; +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_N[] = "N"; +static const char __pyx_k_R[] = "R"; +static const char __pyx_k_a[] = "_a"; +static const char __pyx_k_h[] = "h"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_j[] = "j"; +static const char __pyx_k_m[] = "m"; +static const char __pyx_k_n[] = "n"; +static const char __pyx_k_p[] = "p"; +static const char __pyx_k_w[] = "w"; +static const char __pyx_k_Rs[] = "Rs"; +static const char __pyx_k_bb[] = "bb"; +static const char __pyx_k_dt[] = "dt"; +static const char __pyx_k_gt[] = "gt"; +static const char __pyx_k_np[] = "np"; +static const char __pyx_k_a_2[] = "a"; +static const char __pyx_k_all[] = "all"; +static const char __pyx_k_iou[] = "_iou"; +static const char __pyx_k_len[] = "_len"; +static const char __pyx_k_obj[] = "obj"; +static const char __pyx_k_area[] = "area"; +static const char __pyx_k_bb_2[] = "_bb"; +static const char __pyx_k_cnts[] = "cnts"; +static const char __pyx_k_data[] = "data"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_mask[] = "mask"; +static const char __pyx_k_objs[] = "objs"; +static const char __pyx_k_poly[] = "poly"; +static const char __pyx_k_size[] = "size"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_array[] = "array"; +static const char __pyx_k_bbIou[] = "_bbIou"; +static const char __pyx_k_dtype[] = "dtype"; +static const char __pyx_k_iou_2[] = "iou"; +static const char __pyx_k_isbox[] = "isbox"; +static const char __pyx_k_isrle[] = "isrle"; +static const char __pyx_k_masks[] = "masks"; +static const char __pyx_k_merge[] = "merge"; +static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_order[] = "order"; +static const char __pyx_k_pyobj[] = "pyobj"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_shape[] = "shape"; +static const char __pyx_k_uint8[] = "uint8"; +static const char __pyx_k_zeros[] = "zeros"; +static const char __pyx_k_astype[] = "astype"; +static const char __pyx_k_author[] = "__author__"; +static const char __pyx_k_counts[] = "counts"; +static const char __pyx_k_decode[] = "decode"; +static const char __pyx_k_double[] = "double"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_frBbox[] = "frBbox"; +static const char __pyx_k_frPoly[] = "frPoly"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_iouFun[] = "_iouFun"; +static const char __pyx_k_rleIou[] = "_rleIou"; +static const char __pyx_k_toBbox[] = "toBbox"; +static const char __pyx_k_ucRles[] = "ucRles"; +static const char __pyx_k_uint32[] = "uint32"; +static const char __pyx_k_iscrowd[] = "iscrowd"; +static const char __pyx_k_np_poly[] = "np_poly"; +static const char __pyx_k_preproc[] = "_preproc"; +static const char __pyx_k_reshape[] = "reshape"; +static const char __pyx_k_rleObjs[] = "rleObjs"; +static const char __pyx_k_tsungyi[] = "tsungyi"; +static const char __pyx_k_c_string[] = "c_string"; +static const char __pyx_k_frString[] = "_frString"; +static const char __pyx_k_toString[] = "_toString"; +static const char __pyx_k_enumerate[] = "enumerate"; +static const char __pyx_k_intersect[] = "intersect"; +static const char __pyx_k_py_string[] = "py_string"; +static const char __pyx_k_pyiscrowd[] = "pyiscrowd"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_frPyObjects[] = "frPyObjects"; +static const char __pyx_k_RuntimeError[] = "RuntimeError"; +static const char __pyx_k_AttributeError[] = "AttributeError"; +static const char __pyx_k_iou_locals__len[] = "iou.._len"; +static const char __pyx_k_frUncompressedRLE[] = "frUncompressedRLE"; +static const char __pyx_k_iou_locals__bbIou[] = "iou.._bbIou"; +static const char __pyx_k_pycocotools__mask[] = "pycocotools._mask"; +static const char __pyx_k_iou_locals__rleIou[] = "iou.._rleIou"; +static const char __pyx_k_iou_locals__preproc[] = "iou.._preproc"; +static const char __pyx_k_input_data_type_not_allowed[] = "input data type not allowed."; +static const char __pyx_k_input_type_is_not_supported[] = "input type is not supported."; +static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; +static const char __pyx_k_home_ftian_code_py_faster_rcnn[] = "/home/ftian/code/py-faster-rcnn/lib/pycocotools/_mask.pyx"; +static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; +static const char __pyx_k_numpy_ndarray_input_is_only_for[] = "numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension"; +static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; +static const char __pyx_k_unrecognized_type_The_following[] = "unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported."; +static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; +static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported"; +static const char __pyx_k_The_dt_and_gt_should_have_the_sa[] = "The dt and gt should have the same data type, either RLEs, list or np.ndarray"; +static const char __pyx_k_list_input_can_be_bounding_box_N[] = "list input can be bounding box (Nx4) or RLEs ([RLE])"; +static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous"; +static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; +static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short."; +static PyObject *__pyx_n_s_AttributeError; +static PyObject *__pyx_n_s_F; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor; +static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2; +static PyObject *__pyx_n_s_ImportError; +static PyObject *__pyx_n_s_N; +static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; +static PyObject *__pyx_n_s_R; +static PyObject *__pyx_n_s_Rs; +static PyObject *__pyx_n_s_RuntimeError; +static PyObject *__pyx_kp_s_The_dt_and_gt_should_have_the_sa; +static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_n_s_a; +static PyObject *__pyx_n_s_a_2; +static PyObject *__pyx_n_s_all; +static PyObject *__pyx_n_s_area; +static PyObject *__pyx_n_s_array; +static PyObject *__pyx_n_s_astype; +static PyObject *__pyx_n_s_author; +static PyObject *__pyx_n_s_bb; +static PyObject *__pyx_n_s_bbIou; +static PyObject *__pyx_n_s_bb_2; +static PyObject *__pyx_n_s_c_string; +static PyObject *__pyx_n_s_cnts; +static PyObject *__pyx_n_s_counts; +static PyObject *__pyx_n_s_data; +static PyObject *__pyx_n_s_decode; +static PyObject *__pyx_n_s_double; +static PyObject *__pyx_n_s_dt; +static PyObject *__pyx_n_s_dtype; +static PyObject *__pyx_n_s_encode; +static PyObject *__pyx_n_s_enumerate; +static PyObject *__pyx_n_s_frBbox; +static PyObject *__pyx_n_s_frPoly; +static PyObject *__pyx_n_s_frPyObjects; +static PyObject *__pyx_n_s_frString; +static PyObject *__pyx_n_s_frUncompressedRLE; +static PyObject *__pyx_n_s_gt; +static PyObject *__pyx_n_s_h; +static PyObject *__pyx_kp_s_home_ftian_code_py_faster_rcnn; +static PyObject *__pyx_n_s_i; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_kp_s_input_data_type_not_allowed; +static PyObject *__pyx_kp_s_input_type_is_not_supported; +static PyObject *__pyx_n_s_intersect; +static PyObject *__pyx_n_s_iou; +static PyObject *__pyx_n_s_iouFun; +static PyObject *__pyx_n_s_iou_2; +static PyObject *__pyx_n_s_iou_locals__bbIou; +static PyObject *__pyx_n_s_iou_locals__len; +static PyObject *__pyx_n_s_iou_locals__preproc; +static PyObject *__pyx_n_s_iou_locals__rleIou; +static PyObject *__pyx_n_s_isbox; +static PyObject *__pyx_n_s_iscrowd; +static PyObject *__pyx_n_s_isrle; +static PyObject *__pyx_n_s_j; +static PyObject *__pyx_n_s_len; +static PyObject *__pyx_kp_s_list_input_can_be_bounding_box_N; +static PyObject *__pyx_n_s_m; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_mask; +static PyObject *__pyx_n_s_masks; +static PyObject *__pyx_n_s_merge; +static PyObject *__pyx_n_s_n; +static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous; +static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou; +static PyObject *__pyx_n_s_np; +static PyObject *__pyx_n_s_np_poly; +static PyObject *__pyx_n_s_numpy; +static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to; +static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor; +static PyObject *__pyx_kp_s_numpy_ndarray_input_is_only_for; +static PyObject *__pyx_n_s_obj; +static PyObject *__pyx_n_s_objs; +static PyObject *__pyx_n_s_order; +static PyObject *__pyx_n_s_p; +static PyObject *__pyx_n_s_poly; +static PyObject *__pyx_n_s_preproc; +static PyObject *__pyx_n_s_py_string; +static PyObject *__pyx_n_s_pycocotools__mask; +static PyObject *__pyx_n_s_pyiscrowd; +static PyObject *__pyx_n_s_pyobj; +static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_reshape; +static PyObject *__pyx_n_s_rleIou; +static PyObject *__pyx_n_s_rleObjs; +static PyObject *__pyx_n_s_shape; +static PyObject *__pyx_n_s_size; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_toBbox; +static PyObject *__pyx_n_s_toString; +static PyObject *__pyx_n_s_tsungyi; +static PyObject *__pyx_n_s_ucRles; +static PyObject *__pyx_n_s_uint32; +static PyObject *__pyx_n_s_uint8; +static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; +static PyObject *__pyx_kp_s_unrecognized_type_The_following; +static PyObject *__pyx_n_s_w; +static PyObject *__pyx_n_s_zeros; +static int __pyx_pf_11pycocotools_5_mask_4RLEs___cinit__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self, siz __pyx_v_n); /* proto */ +static void __pyx_pf_11pycocotools_5_mask_4RLEs_2__dealloc__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_4RLEs_4__getattr__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self, PyObject *__pyx_v_key); /* proto */ +static int __pyx_pf_11pycocotools_5_mask_5Masks___cinit__(struct __pyx_obj_11pycocotools_5_mask_Masks *__pyx_v_self, PyObject *__pyx_v_h, PyObject *__pyx_v_w, PyObject *__pyx_v_n); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_5Masks_2__array__(struct __pyx_obj_11pycocotools_5_mask_Masks *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask__toString(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_2_frString(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_4encode(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_6decode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_8merge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs, int __pyx_v_intersect); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_10area(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou__preproc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_2_rleIou(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_dt, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_4_bbIou(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_dt, PyArrayObject *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_6_len(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_12iou(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt, PyObject *__pyx_v_gt, PyObject *__pyx_v_pyiscrowd); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_14toBbox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_16frBbox(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_bb, siz __pyx_v_h, siz __pyx_v_w); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_18frPoly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_poly, siz __pyx_v_h, siz __pyx_v_w); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_20frUncompressedRLE(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ucRles, CYTHON_UNUSED siz __pyx_v_h, CYTHON_UNUSED siz __pyx_v_w); /* proto */ +static PyObject *__pyx_pf_11pycocotools_5_mask_22frPyObjects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyobj, siz __pyx_v_h, PyObject *__pyx_v_w); /* proto */ +static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ +static PyObject *__pyx_tp_new_11pycocotools_5_mask_RLEs(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_11pycocotools_5_mask_Masks(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_int_0; +static PyObject *__pyx_int_1; +static PyObject *__pyx_int_4; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__2; +static PyObject *__pyx_tuple__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_tuple__11; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__15; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__20; +static PyObject *__pyx_tuple__21; +static PyObject *__pyx_tuple__22; +static PyObject *__pyx_tuple__23; +static PyObject *__pyx_tuple__24; +static PyObject *__pyx_tuple__25; +static PyObject *__pyx_tuple__26; +static PyObject *__pyx_tuple__28; +static PyObject *__pyx_tuple__30; +static PyObject *__pyx_tuple__32; +static PyObject *__pyx_tuple__34; +static PyObject *__pyx_tuple__36; +static PyObject *__pyx_tuple__38; +static PyObject *__pyx_tuple__40; +static PyObject *__pyx_tuple__42; +static PyObject *__pyx_tuple__44; +static PyObject *__pyx_tuple__46; +static PyObject *__pyx_tuple__48; +static PyObject *__pyx_codeobj__6; +static PyObject *__pyx_codeobj__8; +static PyObject *__pyx_codeobj__10; +static PyObject *__pyx_codeobj__12; +static PyObject *__pyx_codeobj__27; +static PyObject *__pyx_codeobj__29; +static PyObject *__pyx_codeobj__31; +static PyObject *__pyx_codeobj__33; +static PyObject *__pyx_codeobj__35; +static PyObject *__pyx_codeobj__37; +static PyObject *__pyx_codeobj__39; +static PyObject *__pyx_codeobj__41; +static PyObject *__pyx_codeobj__43; +static PyObject *__pyx_codeobj__45; +static PyObject *__pyx_codeobj__47; +static PyObject *__pyx_codeobj__49; + +/* "pycocotools/_mask.pyx":57 + * cdef siz _n + * + * def __cinit__(self, siz n =0): # <<<<<<<<<<<<<< + * rlesInit(&self._R, n) + * self._n = n + */ + +/* Python wrapper */ +static int __pyx_pw_11pycocotools_5_mask_4RLEs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_11pycocotools_5_mask_4RLEs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + siz __pyx_v_n; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,0}; + PyObject* values[1] = {0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n); + if (value) { values[0] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 57, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } + if (values[0]) { + __pyx_v_n = __Pyx_PyInt_As_siz(values[0]); if (unlikely((__pyx_v_n == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) + } else { + __pyx_v_n = ((siz)0); + } + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 57, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.RLEs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_4RLEs___cinit__(((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_v_self), __pyx_v_n); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_11pycocotools_5_mask_4RLEs___cinit__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self, siz __pyx_v_n) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "pycocotools/_mask.pyx":58 + * + * def __cinit__(self, siz n =0): + * rlesInit(&self._R, n) # <<<<<<<<<<<<<< + * self._n = n + * + */ + rlesInit((&__pyx_v_self->_R), __pyx_v_n); + + /* "pycocotools/_mask.pyx":59 + * def __cinit__(self, siz n =0): + * rlesInit(&self._R, n) + * self._n = n # <<<<<<<<<<<<<< + * + * # free the RLE array here + */ + __pyx_v_self->_n = __pyx_v_n; + + /* "pycocotools/_mask.pyx":57 + * cdef siz _n + * + * def __cinit__(self, siz n =0): # <<<<<<<<<<<<<< + * rlesInit(&self._R, n) + * self._n = n + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":62 + * + * # free the RLE array here + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._R is not NULL: + * for i in range(self._n): + */ + +/* Python wrapper */ +static void __pyx_pw_11pycocotools_5_mask_4RLEs_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_11pycocotools_5_mask_4RLEs_3__dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_pf_11pycocotools_5_mask_4RLEs_2__dealloc__(((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_11pycocotools_5_mask_4RLEs_2__dealloc__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self) { + siz __pyx_v_i; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + siz __pyx_t_2; + siz __pyx_t_3; + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "pycocotools/_mask.pyx":63 + * # free the RLE array here + * def __dealloc__(self): + * if self._R is not NULL: # <<<<<<<<<<<<<< + * for i in range(self._n): + * free(self._R[i].cnts) + */ + __pyx_t_1 = ((__pyx_v_self->_R != NULL) != 0); + if (__pyx_t_1) { + + /* "pycocotools/_mask.pyx":64 + * def __dealloc__(self): + * if self._R is not NULL: + * for i in range(self._n): # <<<<<<<<<<<<<< + * free(self._R[i].cnts) + * free(self._R) + */ + __pyx_t_2 = __pyx_v_self->_n; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "pycocotools/_mask.pyx":65 + * if self._R is not NULL: + * for i in range(self._n): + * free(self._R[i].cnts) # <<<<<<<<<<<<<< + * free(self._R) + * def __getattr__(self, key): + */ + free((__pyx_v_self->_R[__pyx_v_i]).cnts); + } + + /* "pycocotools/_mask.pyx":66 + * for i in range(self._n): + * free(self._R[i].cnts) + * free(self._R) # <<<<<<<<<<<<<< + * def __getattr__(self, key): + * if key == 'n': + */ + free(__pyx_v_self->_R); + + /* "pycocotools/_mask.pyx":63 + * # free the RLE array here + * def __dealloc__(self): + * if self._R is not NULL: # <<<<<<<<<<<<<< + * for i in range(self._n): + * free(self._R[i].cnts) + */ + } + + /* "pycocotools/_mask.pyx":62 + * + * # free the RLE array here + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._R is not NULL: + * for i in range(self._n): + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "pycocotools/_mask.pyx":67 + * free(self._R[i].cnts) + * free(self._R) + * def __getattr__(self, key): # <<<<<<<<<<<<<< + * if key == 'n': + * return self._n + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_4RLEs_5__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/ +static PyObject *__pyx_pw_11pycocotools_5_mask_4RLEs_5__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_4RLEs_4__getattr__(((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_v_self), ((PyObject *)__pyx_v_key)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_4RLEs_4__getattr__(struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_self, PyObject *__pyx_v_key) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + __Pyx_RefNannySetupContext("__getattr__", 0); + + /* "pycocotools/_mask.pyx":68 + * free(self._R) + * def __getattr__(self, key): + * if key == 'n': # <<<<<<<<<<<<<< + * return self._n + * raise AttributeError(key) + */ + __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_key, __pyx_n_s_n, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 68, __pyx_L1_error) + if (__pyx_t_1) { + + /* "pycocotools/_mask.pyx":69 + * def __getattr__(self, key): + * if key == 'n': + * return self._n # <<<<<<<<<<<<<< + * raise AttributeError(key) + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyInt_From_siz(__pyx_v_self->_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":68 + * free(self._R) + * def __getattr__(self, key): + * if key == 'n': # <<<<<<<<<<<<<< + * return self._n + * raise AttributeError(key) + */ + } + + /* "pycocotools/_mask.pyx":70 + * if key == 'n': + * return self._n + * raise AttributeError(key) # <<<<<<<<<<<<<< + * + * # python class to wrap Mask array in C + */ + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_key); + __Pyx_GIVEREF(__pyx_v_key); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 70, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":67 + * free(self._R[i].cnts) + * free(self._R) + * def __getattr__(self, key): # <<<<<<<<<<<<<< + * if key == 'n': + * return self._n + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("pycocotools._mask.RLEs.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":80 + * cdef siz _n + * + * def __cinit__(self, h, w, n): # <<<<<<<<<<<<<< + * self._mask = malloc(h*w*n* sizeof(byte)) + * self._h = h + */ + +/* Python wrapper */ +static int __pyx_pw_11pycocotools_5_mask_5Masks_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_11pycocotools_5_mask_5Masks_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_h = 0; + PyObject *__pyx_v_w = 0; + PyObject *__pyx_v_n = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,&__pyx_n_s_w,&__pyx_n_s_n,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 80, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 80, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 80, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_h = values[0]; + __pyx_v_w = values[1]; + __pyx_v_n = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 80, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.Masks.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_5Masks___cinit__(((struct __pyx_obj_11pycocotools_5_mask_Masks *)__pyx_v_self), __pyx_v_h, __pyx_v_w, __pyx_v_n); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_11pycocotools_5_mask_5Masks___cinit__(struct __pyx_obj_11pycocotools_5_mask_Masks *__pyx_v_self, PyObject *__pyx_v_h, PyObject *__pyx_v_w, PyObject *__pyx_v_n) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + siz __pyx_t_5; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "pycocotools/_mask.pyx":81 + * + * def __cinit__(self, h, w, n): + * self._mask = malloc(h*w*n* sizeof(byte)) # <<<<<<<<<<<<<< + * self._h = h + * self._w = w + */ + __pyx_t_1 = PyNumber_Multiply(__pyx_v_h, __pyx_v_w); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(byte))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 81, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_self->_mask = ((byte *)malloc(__pyx_t_4)); + + /* "pycocotools/_mask.pyx":82 + * def __cinit__(self, h, w, n): + * self._mask = malloc(h*w*n* sizeof(byte)) + * self._h = h # <<<<<<<<<<<<<< + * self._w = w + * self._n = n + */ + __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_h); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_v_self->_h = __pyx_t_5; + + /* "pycocotools/_mask.pyx":83 + * self._mask = malloc(h*w*n* sizeof(byte)) + * self._h = h + * self._w = w # <<<<<<<<<<<<<< + * self._n = n + * # def __dealloc__(self): + */ + __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_w); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L1_error) + __pyx_v_self->_w = __pyx_t_5; + + /* "pycocotools/_mask.pyx":84 + * self._h = h + * self._w = w + * self._n = n # <<<<<<<<<<<<<< + * # def __dealloc__(self): + * # the memory management of _mask has been passed to np.ndarray + */ + __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_v_n); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_v_self->_n = __pyx_t_5; + + /* "pycocotools/_mask.pyx":80 + * cdef siz _n + * + * def __cinit__(self, h, w, n): # <<<<<<<<<<<<<< + * self._mask = malloc(h*w*n* sizeof(byte)) + * self._h = h + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("pycocotools._mask.Masks.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":90 + * + * # called when passing into np.array() and return an np.ndarray in column-major order + * def __array__(self): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * shape[0] = self._h*self._w*self._n + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_5Masks_3__array__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_11pycocotools_5_mask_5Masks_3__array__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__array__ (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_5Masks_2__array__(((struct __pyx_obj_11pycocotools_5_mask_Masks *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_5Masks_2__array__(struct __pyx_obj_11pycocotools_5_mask_Masks *__pyx_v_self) { + npy_intp __pyx_v_shape[1]; + PyObject *__pyx_v_ndarray = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("__array__", 0); + + /* "pycocotools/_mask.pyx":92 + * def __array__(self): + * cdef np.npy_intp shape[1] + * shape[0] = self._h*self._w*self._n # <<<<<<<<<<<<<< + * # Create a 1D array, and reshape it to fortran/Matlab column-major array + * ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F') + */ + (__pyx_v_shape[0]) = ((((npy_intp)__pyx_v_self->_h) * __pyx_v_self->_w) * __pyx_v_self->_n); + + /* "pycocotools/_mask.pyx":94 + * shape[0] = self._h*self._w*self._n + * # Create a 1D array, and reshape it to fortran/Matlab column-major array + * ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F') # <<<<<<<<<<<<<< + * # The _mask allocated by Masks is now handled by ndarray + * PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA) + */ + __pyx_t_1 = PyArray_SimpleNewFromData(1, __pyx_v_shape, NPY_UINT8, __pyx_v_self->_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_self->_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_From_siz(__pyx_v_self->_w); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_self->_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); + __pyx_t_1 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_F) < 0) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_ndarray = __pyx_t_3; + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":96 + * ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F') + * # The _mask allocated by Masks is now handled by ndarray + * PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA) # <<<<<<<<<<<<<< + * return ndarray + * + */ + if (!(likely(((__pyx_v_ndarray) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_ndarray, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 96, __pyx_L1_error) + PyArray_ENABLEFLAGS(((PyArrayObject *)__pyx_v_ndarray), NPY_OWNDATA); + + /* "pycocotools/_mask.pyx":97 + * # The _mask allocated by Masks is now handled by ndarray + * PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA) + * return ndarray # <<<<<<<<<<<<<< + * + * # internal conversion from Python RLEs object to compressed RLE format + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_ndarray); + __pyx_r = __pyx_v_ndarray; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":90 + * + * # called when passing into np.array() and return an np.ndarray in column-major order + * def __array__(self): # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * shape[0] = self._h*self._w*self._n + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("pycocotools._mask.Masks.__array__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_ndarray); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":100 + * + * # internal conversion from Python RLEs object to compressed RLE format + * def _toString(RLEs Rs): # <<<<<<<<<<<<<< + * cdef siz n = Rs.n + * cdef bytes py_string + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_1_toString(PyObject *__pyx_self, PyObject *__pyx_v_Rs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_1_toString = {"_toString", (PyCFunction)__pyx_pw_11pycocotools_5_mask_1_toString, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_1_toString(PyObject *__pyx_self, PyObject *__pyx_v_Rs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_toString (wrapper)", 0); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Rs), __pyx_ptype_11pycocotools_5_mask_RLEs, 1, "Rs", 0))) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_r = __pyx_pf_11pycocotools_5_mask__toString(__pyx_self, ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_v_Rs)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask__toString(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs) { + siz __pyx_v_n; + PyObject *__pyx_v_py_string = 0; + char *__pyx_v_c_string; + PyObject *__pyx_v_objs = NULL; + siz __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + siz __pyx_t_2; + siz __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + __Pyx_RefNannySetupContext("_toString", 0); + + /* "pycocotools/_mask.pyx":101 + * # internal conversion from Python RLEs object to compressed RLE format + * def _toString(RLEs Rs): + * cdef siz n = Rs.n # <<<<<<<<<<<<<< + * cdef bytes py_string + * cdef char* c_string + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_Rs), __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_As_siz(__pyx_t_1); if (unlikely((__pyx_t_2 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_n = __pyx_t_2; + + /* "pycocotools/_mask.pyx":104 + * cdef bytes py_string + * cdef char* c_string + * objs = [] # <<<<<<<<<<<<<< + * for i in range(n): + * c_string = rleToString( &Rs._R[i] ) + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_objs = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":105 + * cdef char* c_string + * objs = [] + * for i in range(n): # <<<<<<<<<<<<<< + * c_string = rleToString( &Rs._R[i] ) + * py_string = c_string + */ + __pyx_t_2 = __pyx_v_n; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "pycocotools/_mask.pyx":106 + * objs = [] + * for i in range(n): + * c_string = rleToString( &Rs._R[i] ) # <<<<<<<<<<<<<< + * py_string = c_string + * objs.append({ + */ + __pyx_v_c_string = rleToString(((RLE *)(&(__pyx_v_Rs->_R[__pyx_v_i])))); + + /* "pycocotools/_mask.pyx":107 + * for i in range(n): + * c_string = rleToString( &Rs._R[i] ) + * py_string = c_string # <<<<<<<<<<<<<< + * objs.append({ + * 'size': [Rs._R[i].h, Rs._R[i].w], + */ + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XDECREF_SET(__pyx_v_py_string, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":109 + * py_string = c_string + * objs.append({ + * 'size': [Rs._R[i].h, Rs._R[i].w], # <<<<<<<<<<<<<< + * 'counts': py_string + * }) + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyInt_From_siz((__pyx_v_Rs->_R[__pyx_v_i]).h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyInt_From_siz((__pyx_v_Rs->_R[__pyx_v_i]).w); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_4); + PyList_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyList_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); + __pyx_t_4 = 0; + __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_size, __pyx_t_6) < 0) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "pycocotools/_mask.pyx":111 + * 'size': [Rs._R[i].h, Rs._R[i].w], + * 'counts': py_string + * }) # <<<<<<<<<<<<<< + * free(c_string) + * return objs + */ + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_counts, __pyx_v_py_string) < 0) __PYX_ERR(0, 109, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":108 + * c_string = rleToString( &Rs._R[i] ) + * py_string = c_string + * objs.append({ # <<<<<<<<<<<<<< + * 'size': [Rs._R[i].h, Rs._R[i].w], + * 'counts': py_string + */ + __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_objs, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":112 + * 'counts': py_string + * }) + * free(c_string) # <<<<<<<<<<<<<< + * return objs + * + */ + free(__pyx_v_c_string); + } + + /* "pycocotools/_mask.pyx":113 + * }) + * free(c_string) + * return objs # <<<<<<<<<<<<<< + * + * # internal conversion from compressed RLE format to Python RLEs object + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":100 + * + * # internal conversion from Python RLEs object to compressed RLE format + * def _toString(RLEs Rs): # <<<<<<<<<<<<<< + * cdef siz n = Rs.n + * cdef bytes py_string + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("pycocotools._mask._toString", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_py_string); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":116 + * + * # internal conversion from compressed RLE format to Python RLEs object + * def _frString(rleObjs): # <<<<<<<<<<<<<< + * cdef siz n = len(rleObjs) + * Rs = RLEs(n) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_3_frString(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_3_frString = {"_frString", (PyCFunction)__pyx_pw_11pycocotools_5_mask_3_frString, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_3_frString(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_frString (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_2_frString(__pyx_self, ((PyObject *)__pyx_v_rleObjs)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_2_frString(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + siz __pyx_v_n; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = NULL; + PyObject *__pyx_v_py_string = 0; + char *__pyx_v_c_string; + PyObject *__pyx_v_i = NULL; + PyObject *__pyx_v_obj = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *(*__pyx_t_4)(PyObject *); + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + char *__pyx_t_7; + Py_ssize_t __pyx_t_8; + siz __pyx_t_9; + siz __pyx_t_10; + __Pyx_RefNannySetupContext("_frString", 0); + + /* "pycocotools/_mask.pyx":117 + * # internal conversion from compressed RLE format to Python RLEs object + * def _frString(rleObjs): + * cdef siz n = len(rleObjs) # <<<<<<<<<<<<<< + * Rs = RLEs(n) + * cdef bytes py_string + */ + __pyx_t_1 = PyObject_Length(__pyx_v_rleObjs); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_v_n = __pyx_t_1; + + /* "pycocotools/_mask.pyx":118 + * def _frString(rleObjs): + * cdef siz n = len(rleObjs) + * Rs = RLEs(n) # <<<<<<<<<<<<<< + * cdef bytes py_string + * cdef char* c_string + */ + __pyx_t_2 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":121 + * cdef bytes py_string + * cdef char* c_string + * for i, obj in enumerate(rleObjs): # <<<<<<<<<<<<<< + * py_string = str(obj['counts']) + * c_string = py_string + */ + __Pyx_INCREF(__pyx_int_0); + __pyx_t_2 = __pyx_int_0; + if (likely(PyList_CheckExact(__pyx_v_rleObjs)) || PyTuple_CheckExact(__pyx_v_rleObjs)) { + __pyx_t_3 = __pyx_v_rleObjs; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; + __pyx_t_4 = NULL; + } else { + __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_rleObjs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 121, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 121, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_4(__pyx_t_3); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 121, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); + __pyx_t_2 = __pyx_t_5; + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":122 + * cdef char* c_string + * for i, obj in enumerate(rleObjs): + * py_string = str(obj['counts']) # <<<<<<<<<<<<<< + * c_string = py_string + * rleFrString( &Rs._R[i], c_string, obj['size'][0], obj['size'][1] ) + */ + __pyx_t_5 = PyObject_GetItem(__pyx_v_obj, __pyx_n_s_counts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_py_string, ((PyObject*)__pyx_t_5)); + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":123 + * for i, obj in enumerate(rleObjs): + * py_string = str(obj['counts']) + * c_string = py_string # <<<<<<<<<<<<<< + * rleFrString( &Rs._R[i], c_string, obj['size'][0], obj['size'][1] ) + * return Rs + */ + __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_py_string); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_v_c_string = __pyx_t_7; + + /* "pycocotools/_mask.pyx":124 + * py_string = str(obj['counts']) + * c_string = py_string + * rleFrString( &Rs._R[i], c_string, obj['size'][0], obj['size'][1] ) # <<<<<<<<<<<<<< + * return Rs + * + */ + __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_5 = PyObject_GetItem(__pyx_v_obj, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_9 = __Pyx_PyInt_As_siz(__pyx_t_6); if (unlikely((__pyx_t_9 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyObject_GetItem(__pyx_v_obj, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_10 = __Pyx_PyInt_As_siz(__pyx_t_5); if (unlikely((__pyx_t_10 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + rleFrString(((RLE *)(&(__pyx_v_Rs->_R[__pyx_t_8]))), ((char *)__pyx_v_c_string), __pyx_t_9, __pyx_t_10); + + /* "pycocotools/_mask.pyx":121 + * cdef bytes py_string + * cdef char* c_string + * for i, obj in enumerate(rleObjs): # <<<<<<<<<<<<<< + * py_string = str(obj['counts']) + * c_string = py_string + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":125 + * c_string = py_string + * rleFrString( &Rs._R[i], c_string, obj['size'][0], obj['size'][1] ) + * return Rs # <<<<<<<<<<<<<< + * + * # encode mask to RLEs objects + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_Rs)); + __pyx_r = ((PyObject *)__pyx_v_Rs); + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":116 + * + * # internal conversion from compressed RLE format to Python RLEs object + * def _frString(rleObjs): # <<<<<<<<<<<<<< + * cdef siz n = len(rleObjs) + * Rs = RLEs(n) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("pycocotools._mask._frString", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_py_string); + __Pyx_XDECREF(__pyx_v_i); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":129 + * # encode mask to RLEs objects + * # list of RLE string can be generated by RLEs member function + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): # <<<<<<<<<<<<<< + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_5encode(PyObject *__pyx_self, PyObject *__pyx_v_mask); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_5encode = {"encode", (PyCFunction)__pyx_pw_11pycocotools_5_mask_5encode, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_5encode(PyObject *__pyx_self, PyObject *__pyx_v_mask) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("encode (wrapper)", 0); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) __PYX_ERR(0, 129, __pyx_L1_error) + __pyx_r = __pyx_pf_11pycocotools_5_mask_4encode(__pyx_self, ((PyArrayObject *)__pyx_v_mask)); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_4encode(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask) { + npy_intp __pyx_v_h; + npy_intp __pyx_v_w; + npy_intp __pyx_v_n; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = 0; + PyObject *__pyx_v_objs = NULL; + __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; + __Pyx_Buffer __pyx_pybuffer_mask; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + npy_intp __pyx_t_1; + npy_intp __pyx_t_2; + npy_intp __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + __Pyx_RefNannySetupContext("encode", 0); + __pyx_pybuffer_mask.pybuffer.buf = NULL; + __pyx_pybuffer_mask.refcount = 0; + __pyx_pybuffernd_mask.data = NULL; + __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_F_CONTIGUOUS, 3, 0, __pyx_stack) == -1)) __PYX_ERR(0, 129, __pyx_L1_error) + } + __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mask.diminfo[1].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mask.diminfo[1].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_mask.diminfo[2].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_mask.diminfo[2].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[2]; + + /* "pycocotools/_mask.pyx":130 + * # list of RLE string can be generated by RLEs member function + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] # <<<<<<<<<<<<<< + * cdef RLEs Rs = RLEs(n) + * rleEncode(Rs._R,mask.data,h,w,n) + */ + __pyx_t_1 = (__pyx_v_mask->dimensions[0]); + __pyx_t_2 = (__pyx_v_mask->dimensions[1]); + __pyx_t_3 = (__pyx_v_mask->dimensions[2]); + __pyx_v_h = __pyx_t_1; + __pyx_v_w = __pyx_t_2; + __pyx_v_n = __pyx_t_3; + + /* "pycocotools/_mask.pyx":131 + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) # <<<<<<<<<<<<<< + * rleEncode(Rs._R,mask.data,h,w,n) + * objs = _toString(Rs) + */ + __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_4); + __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":132 + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) + * rleEncode(Rs._R,mask.data,h,w,n) # <<<<<<<<<<<<<< + * objs = _toString(Rs) + * return objs + */ + rleEncode(__pyx_v_Rs->_R, ((byte *)__pyx_v_mask->data), __pyx_v_h, __pyx_v_w, __pyx_v_n); + + /* "pycocotools/_mask.pyx":133 + * cdef RLEs Rs = RLEs(n) + * rleEncode(Rs._R,mask.data,h,w,n) + * objs = _toString(Rs) # <<<<<<<<<<<<<< + * return objs + * + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_toString); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (!__pyx_t_6) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_Rs)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_6, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_6, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_Rs)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_Rs)); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_Rs)); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_objs = __pyx_t_4; + __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":134 + * rleEncode(Rs._R,mask.data,h,w,n) + * objs = _toString(Rs) + * return objs # <<<<<<<<<<<<<< + * + * # decode mask from compressed list of RLE string or RLEs object + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":129 + * # encode mask to RLEs objects + * # list of RLE string can be generated by RLEs member function + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): # <<<<<<<<<<<<<< + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":137 + * + * # decode mask from compressed list of RLE string or RLEs object + * def decode(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_7decode(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_7decode = {"decode", (PyCFunction)__pyx_pw_11pycocotools_5_mask_7decode, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_7decode(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("decode (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_6decode(__pyx_self, ((PyObject *)__pyx_v_rleObjs)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_6decode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = 0; + siz __pyx_v_h; + siz __pyx_v_w; + siz __pyx_v_n; + struct __pyx_obj_11pycocotools_5_mask_Masks *__pyx_v_masks = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + siz __pyx_t_5; + siz __pyx_t_6; + siz __pyx_t_7; + __Pyx_RefNannySetupContext("decode", 0); + + /* "pycocotools/_mask.pyx":138 + * # decode mask from compressed list of RLE string or RLEs object + * def decode(rleObjs): + * cdef RLEs Rs = _frString(rleObjs) # <<<<<<<<<<<<<< + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + * masks = Masks(h, w, n) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_frString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_rleObjs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_rleObjs); + __Pyx_GIVEREF(__pyx_v_rleObjs); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_rleObjs); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11pycocotools_5_mask_RLEs))))) __PYX_ERR(0, 138, __pyx_L1_error) + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":139 + * def decode(rleObjs): + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n # <<<<<<<<<<<<<< + * masks = Masks(h, w, n) + * rleDecode( Rs._R, masks._mask, n ); + */ + __pyx_t_5 = (__pyx_v_Rs->_R[0]).h; + __pyx_t_6 = (__pyx_v_Rs->_R[0]).w; + __pyx_t_7 = __pyx_v_Rs->_n; + __pyx_v_h = __pyx_t_5; + __pyx_v_w = __pyx_t_6; + __pyx_v_n = __pyx_t_7; + + /* "pycocotools/_mask.pyx":140 + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + * masks = Masks(h, w, n) # <<<<<<<<<<<<<< + * rleDecode( Rs._R, masks._mask, n ); + * return np.array(masks) + */ + __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyInt_From_siz(__pyx_v_w); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_Masks), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 140, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_masks = ((struct __pyx_obj_11pycocotools_5_mask_Masks *)__pyx_t_4); + __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":141 + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + * masks = Masks(h, w, n) + * rleDecode( Rs._R, masks._mask, n ); # <<<<<<<<<<<<<< + * return np.array(masks) + * + */ + rleDecode(((RLE *)__pyx_v_Rs->_R), __pyx_v_masks->_mask, __pyx_v_n); + + /* "pycocotools/_mask.pyx":142 + * masks = Masks(h, w, n) + * rleDecode( Rs._R, masks._mask, n ); + * return np.array(masks) # <<<<<<<<<<<<<< + * + * def merge(rleObjs, bint intersect=0): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_masks)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_masks)}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_masks)}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_masks)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_masks)); + PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_masks)); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":137 + * + * # decode mask from compressed list of RLE string or RLEs object + * def decode(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("pycocotools._mask.decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF((PyObject *)__pyx_v_masks); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":144 + * return np.array(masks) + * + * def merge(rleObjs, bint intersect=0): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_9merge(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_9merge = {"merge", (PyCFunction)__pyx_pw_11pycocotools_5_mask_9merge, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_9merge(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_rleObjs = 0; + int __pyx_v_intersect; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("merge (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rleObjs,&__pyx_n_s_intersect,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rleObjs)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_intersect); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "merge") < 0)) __PYX_ERR(0, 144, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_rleObjs = values[0]; + if (values[1]) { + __pyx_v_intersect = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_intersect == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 144, __pyx_L3_error) + } else { + __pyx_v_intersect = ((int)0); + } + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("merge", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 144, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.merge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_8merge(__pyx_self, __pyx_v_rleObjs, __pyx_v_intersect); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_8merge(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs, int __pyx_v_intersect) { + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = 0; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_R = 0; + PyObject *__pyx_v_obj = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("merge", 0); + + /* "pycocotools/_mask.pyx":145 + * + * def merge(rleObjs, bint intersect=0): + * cdef RLEs Rs = _frString(rleObjs) # <<<<<<<<<<<<<< + * cdef RLEs R = RLEs(1) + * rleMerge(Rs._R, R._R, Rs._n, intersect) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_frString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_rleObjs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_rleObjs); + __Pyx_GIVEREF(__pyx_v_rleObjs); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_rleObjs); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11pycocotools_5_mask_RLEs))))) __PYX_ERR(0, 145, __pyx_L1_error) + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":146 + * def merge(rleObjs, bint intersect=0): + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) # <<<<<<<<<<<<<< + * rleMerge(Rs._R, R._R, Rs._n, intersect) + * obj = _toString(R)[0] + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_R = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":147 + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) + * rleMerge(Rs._R, R._R, Rs._n, intersect) # <<<<<<<<<<<<<< + * obj = _toString(R)[0] + * return obj + */ + rleMerge(((RLE *)__pyx_v_Rs->_R), ((RLE *)__pyx_v_R->_R), ((siz)__pyx_v_Rs->_n), __pyx_v_intersect); + + /* "pycocotools/_mask.pyx":148 + * cdef RLEs R = RLEs(1) + * rleMerge(Rs._R, R._R, Rs._n, intersect) + * obj = _toString(R)[0] # <<<<<<<<<<<<<< + * return obj + * + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_toString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_R)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_R)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, ((PyObject *)__pyx_v_R)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_R)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_R)); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject *)__pyx_v_R)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_obj = __pyx_t_2; + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":149 + * rleMerge(Rs._R, R._R, Rs._n, intersect) + * obj = _toString(R)[0] + * return obj # <<<<<<<<<<<<<< + * + * def area(rleObjs): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":144 + * return np.array(masks) + * + * def merge(rleObjs, bint intersect=0): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("pycocotools._mask.merge", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF((PyObject *)__pyx_v_R); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":151 + * return obj + * + * def area(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_11area(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_11area = {"area", (PyCFunction)__pyx_pw_11pycocotools_5_mask_11area, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_11area(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("area (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_10area(__pyx_self, ((PyObject *)__pyx_v_rleObjs)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_10area(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = 0; + uint *__pyx_v__a; + npy_intp __pyx_v_shape[1]; + PyObject *__pyx_v_a = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("area", 0); + + /* "pycocotools/_mask.pyx":152 + * + * def area(rleObjs): + * cdef RLEs Rs = _frString(rleObjs) # <<<<<<<<<<<<<< + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + * rleArea(Rs._R, Rs._n, _a) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_frString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_rleObjs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_rleObjs); + __Pyx_GIVEREF(__pyx_v_rleObjs); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_rleObjs); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11pycocotools_5_mask_RLEs))))) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":153 + * def area(rleObjs): + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) # <<<<<<<<<<<<<< + * rleArea(Rs._R, Rs._n, _a) + * cdef np.npy_intp shape[1] + */ + __pyx_v__a = ((uint *)malloc((__pyx_v_Rs->_n * (sizeof(unsigned int))))); + + /* "pycocotools/_mask.pyx":154 + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + * rleArea(Rs._R, Rs._n, _a) # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * shape[0] = Rs._n + */ + rleArea(__pyx_v_Rs->_R, __pyx_v_Rs->_n, __pyx_v__a); + + /* "pycocotools/_mask.pyx":156 + * rleArea(Rs._R, Rs._n, _a) + * cdef np.npy_intp shape[1] + * shape[0] = Rs._n # <<<<<<<<<<<<<< + * a = np.array((Rs._n, ), dtype=np.uint8) + * a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) + */ + (__pyx_v_shape[0]) = ((npy_intp)__pyx_v_Rs->_n); + + /* "pycocotools/_mask.pyx":157 + * cdef np.npy_intp shape[1] + * shape[0] = Rs._n + * a = np.array((Rs._n, ), dtype=np.uint8) # <<<<<<<<<<<<<< + * a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) + * PyArray_ENABLEFLAGS(a, np.NPY_OWNDATA) + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_Rs->_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_a = __pyx_t_5; + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":158 + * shape[0] = Rs._n + * a = np.array((Rs._n, ), dtype=np.uint8) + * a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) # <<<<<<<<<<<<<< + * PyArray_ENABLEFLAGS(a, np.NPY_OWNDATA) + * return a + */ + __pyx_t_5 = PyArray_SimpleNewFromData(1, __pyx_v_shape, NPY_UINT32, __pyx_v__a); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_a, __pyx_t_5); + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":159 + * a = np.array((Rs._n, ), dtype=np.uint8) + * a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) + * PyArray_ENABLEFLAGS(a, np.NPY_OWNDATA) # <<<<<<<<<<<<<< + * return a + * + */ + if (!(likely(((__pyx_v_a) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_a, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 159, __pyx_L1_error) + PyArray_ENABLEFLAGS(((PyArrayObject *)__pyx_v_a), NPY_OWNDATA); + + /* "pycocotools/_mask.pyx":160 + * a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) + * PyArray_ENABLEFLAGS(a, np.NPY_OWNDATA) + * return a # <<<<<<<<<<<<<< + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_a); + __pyx_r = __pyx_v_a; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":151 + * return obj + * + * def area(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("pycocotools._mask.area", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_a); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":163 + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): # <<<<<<<<<<<<<< + * def _preproc(objs): + * if len(objs) == 0: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_13iou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_13iou = {"iou", (PyCFunction)__pyx_pw_11pycocotools_5_mask_13iou, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_13iou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_dt = 0; + PyObject *__pyx_v_gt = 0; + PyObject *__pyx_v_pyiscrowd = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("iou (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dt,&__pyx_n_s_gt,&__pyx_n_s_pyiscrowd,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gt)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("iou", 1, 3, 3, 1); __PYX_ERR(0, 163, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyiscrowd)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("iou", 1, 3, 3, 2); __PYX_ERR(0, 163, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iou") < 0)) __PYX_ERR(0, 163, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_dt = values[0]; + __pyx_v_gt = values[1]; + __pyx_v_pyiscrowd = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("iou", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 163, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.iou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_12iou(__pyx_self, __pyx_v_dt, __pyx_v_gt, __pyx_v_pyiscrowd); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":164 + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): # <<<<<<<<<<<<<< + * if len(objs) == 0: + * return objs + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_1_preproc(PyObject *__pyx_self, PyObject *__pyx_v_objs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_3iou_1_preproc = {"_preproc", (PyCFunction)__pyx_pw_11pycocotools_5_mask_3iou_1_preproc, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_1_preproc(PyObject *__pyx_self, PyObject *__pyx_v_objs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_preproc (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_3iou__preproc(__pyx_self, ((PyObject *)__pyx_v_objs)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou__preproc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_objs) { + PyObject *__pyx_v_isbox = NULL; + PyObject *__pyx_v_isrle = NULL; + PyObject *__pyx_v_obj = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *(*__pyx_t_11)(PyObject *); + PyObject *__pyx_t_12 = NULL; + Py_ssize_t __pyx_t_13; + PyObject *__pyx_t_14 = NULL; + __Pyx_RefNannySetupContext("_preproc", 0); + __Pyx_INCREF(__pyx_v_objs); + + /* "pycocotools/_mask.pyx":165 + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): + * if len(objs) == 0: # <<<<<<<<<<<<<< + * return objs + * if type(objs) == np.ndarray: + */ + __pyx_t_1 = PyObject_Length(__pyx_v_objs); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_t_2 = ((__pyx_t_1 == 0) != 0); + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":166 + * def _preproc(objs): + * if len(objs) == 0: + * return objs # <<<<<<<<<<<<<< + * if type(objs) == np.ndarray: + * if len(objs.shape) == 1: + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":165 + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): + * if len(objs) == 0: # <<<<<<<<<<<<<< + * return objs + * if type(objs) == np.ndarray: + */ + } + + /* "pycocotools/_mask.pyx":167 + * if len(objs) == 0: + * return objs + * if type(objs) == np.ndarray: # <<<<<<<<<<<<<< + * if len(objs.shape) == 1: + * objs = objs.reshape((objs[0], 1)) + */ + __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_objs)), ((PyObject *)__pyx_ptype_5numpy_ndarray), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 167, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":168 + * return objs + * if type(objs) == np.ndarray: + * if len(objs.shape) == 1: # <<<<<<<<<<<<<< + * objs = objs.reshape((objs[0], 1)) + * # check if it's Nx4 bbox + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = ((__pyx_t_1 == 1) != 0); + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":169 + * if type(objs) == np.ndarray: + * if len(objs.shape) == 1: + * objs = objs.reshape((objs[0], 1)) # <<<<<<<<<<<<<< + * # check if it's Nx4 bbox + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_objs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_1); + __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_5) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_objs, __pyx_t_3); + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":168 + * return objs + * if type(objs) == np.ndarray: + * if len(objs.shape) == 1: # <<<<<<<<<<<<<< + * objs = objs.reshape((objs[0], 1)) + * # check if it's Nx4 bbox + */ + } + + /* "pycocotools/_mask.pyx":171 + * objs = objs.reshape((objs[0], 1)) + * # check if it's Nx4 bbox + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: # <<<<<<<<<<<<<< + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + * objs = objs.astype(np.double) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = ((!((__pyx_t_1 == 2) != 0)) != 0); + if (!__pyx_t_8) { + } else { + __pyx_t_2 = __pyx_t_8; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_9 = ((!__pyx_t_8) != 0); + __pyx_t_2 = __pyx_t_9; + __pyx_L7_bool_binop_done:; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":172 + * # check if it's Nx4 bbox + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') # <<<<<<<<<<<<<< + * objs = objs.astype(np.double) + * elif type(objs) == list: + */ + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 172, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":171 + * objs = objs.reshape((objs[0], 1)) + * # check if it's Nx4 bbox + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: # <<<<<<<<<<<<<< + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + * objs = objs.astype(np.double) + */ + } + + /* "pycocotools/_mask.pyx":173 + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + * objs = objs.astype(np.double) # <<<<<<<<<<<<<< + * elif type(objs) == list: + * # check if list is in box format and convert it to np.ndarray + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_7) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_objs, __pyx_t_3); + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":167 + * if len(objs) == 0: + * return objs + * if type(objs) == np.ndarray: # <<<<<<<<<<<<<< + * if len(objs.shape) == 1: + * objs = objs.reshape((objs[0], 1)) + */ + goto __pyx_L4; + } + + /* "pycocotools/_mask.pyx":174 + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + * objs = objs.astype(np.double) + * elif type(objs) == list: # <<<<<<<<<<<<<< + * # check if list is in box format and convert it to np.ndarray + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + */ + __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_objs)), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":176 + * elif type(objs) == list: + * # check if list is in box format and convert it to np.ndarray + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) # <<<<<<<<<<<<<< + * isrle = np.all(np.array([type(obj) == dict for obj in objs])) + * if isbox: + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (likely(PyList_CheckExact(__pyx_v_objs)) || PyTuple_CheckExact(__pyx_v_objs)) { + __pyx_t_10 = __pyx_v_objs; __Pyx_INCREF(__pyx_t_10); __pyx_t_1 = 0; + __pyx_t_11 = NULL; + } else { + __pyx_t_1 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_objs); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 176, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_11)) { + if (likely(PyList_CheckExact(__pyx_t_10))) { + if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_10)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_12 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_1); __Pyx_INCREF(__pyx_t_12); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) + #else + __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + #endif + } else { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_10)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_1); __Pyx_INCREF(__pyx_t_12); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) + #else + __pyx_t_12 = PySequence_ITEM(__pyx_t_10, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + #endif + } + } else { + __pyx_t_12 = __pyx_t_11(__pyx_t_10); + if (unlikely(!__pyx_t_12)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 176, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_12); + } + __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_13 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 176, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_13 == 4); + if (__pyx_t_2) { + } else { + __pyx_t_14 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_12 = __pyx_t_14; + __pyx_t_14 = 0; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_14 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_obj)), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 176, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 176, __pyx_L1_error) + if (!__pyx_t_2) { + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } else { + __Pyx_INCREF(__pyx_t_14); + __pyx_t_12 = __pyx_t_14; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_14 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_obj)), ((PyObject *)__pyx_ptype_5numpy_ndarray), Py_EQ); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_INCREF(__pyx_t_14); + __pyx_t_12 = __pyx_t_14; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_L11_bool_binop_done:; + if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_10) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (!__pyx_t_7) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_isbox = __pyx_t_3; + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":177 + * # check if list is in box format and convert it to np.ndarray + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + * isrle = np.all(np.array([type(obj) == dict for obj in objs])) # <<<<<<<<<<<<<< + * if isbox: + * objs = np.array(objs, dtype=np.double) + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_all); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (likely(PyList_CheckExact(__pyx_v_objs)) || PyTuple_CheckExact(__pyx_v_objs)) { + __pyx_t_6 = __pyx_v_objs; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0; + __pyx_t_11 = NULL; + } else { + __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_objs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 177, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_11)) { + if (likely(PyList_CheckExact(__pyx_t_6))) { + if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_10); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 177, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } else { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_10); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 177, __pyx_L1_error) + #else + __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + #endif + } + } else { + __pyx_t_10 = __pyx_t_11(__pyx_t_6); + if (unlikely(!__pyx_t_10)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 177, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_10); + } + __Pyx_XDECREF_SET(__pyx_v_obj, __pyx_t_10); + __pyx_t_10 = 0; + __pyx_t_10 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_obj)), ((PyObject *)(&PyDict_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_6) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_12, function); + } + } + if (!__pyx_t_7) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_12)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + } + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_v_isrle = __pyx_t_3; + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":178 + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + * isrle = np.all(np.array([type(obj) == dict for obj in objs])) + * if isbox: # <<<<<<<<<<<<<< + * objs = np.array(objs, dtype=np.double) + * if len(objs.shape) == 1: + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_isbox); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":179 + * isrle = np.all(np.array([type(obj) == dict for obj in objs])) + * if isbox: + * objs = np.array(objs, dtype=np.double) # <<<<<<<<<<<<<< + * if len(objs.shape) == 1: + * objs = objs.reshape((1,objs.shape[0])) + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_objs); + __Pyx_GIVEREF(__pyx_v_objs); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_objs); + __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF_SET(__pyx_v_objs, __pyx_t_7); + __pyx_t_7 = 0; + + /* "pycocotools/_mask.pyx":180 + * if isbox: + * objs = np.array(objs, dtype=np.double) + * if len(objs.shape) == 1: # <<<<<<<<<<<<<< + * objs = objs.reshape((1,objs.shape[0])) + * elif isrle: + */ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_1 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_2 = ((__pyx_t_1 == 1) != 0); + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":181 + * objs = np.array(objs, dtype=np.double) + * if len(objs.shape) == 1: + * objs = objs.reshape((1,objs.shape[0])) # <<<<<<<<<<<<<< + * elif isrle: + * objs = _frString(objs) + */ + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_objs, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_1); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12); + __pyx_t_12 = 0; + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (!__pyx_t_12) { + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_7); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3}; + __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3}; + __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_12); __pyx_t_12 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF_SET(__pyx_v_objs, __pyx_t_7); + __pyx_t_7 = 0; + + /* "pycocotools/_mask.pyx":180 + * if isbox: + * objs = np.array(objs, dtype=np.double) + * if len(objs.shape) == 1: # <<<<<<<<<<<<<< + * objs = objs.reshape((1,objs.shape[0])) + * elif isrle: + */ + } + + /* "pycocotools/_mask.pyx":178 + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + * isrle = np.all(np.array([type(obj) == dict for obj in objs])) + * if isbox: # <<<<<<<<<<<<<< + * objs = np.array(objs, dtype=np.double) + * if len(objs.shape) == 1: + */ + goto __pyx_L16; + } + + /* "pycocotools/_mask.pyx":182 + * if len(objs.shape) == 1: + * objs = objs.reshape((1,objs.shape[0])) + * elif isrle: # <<<<<<<<<<<<<< + * objs = _frString(objs) + * else: + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_isrle); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 182, __pyx_L1_error) + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":183 + * objs = objs.reshape((1,objs.shape[0])) + * elif isrle: + * objs = _frString(objs) # <<<<<<<<<<<<<< + * else: + * raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') + */ + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_frString); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (!__pyx_t_5) { + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_objs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_objs}; + __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_7); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_objs}; + __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_7); + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_v_objs); + __Pyx_GIVEREF(__pyx_v_objs); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_objs); + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF_SET(__pyx_v_objs, __pyx_t_7); + __pyx_t_7 = 0; + + /* "pycocotools/_mask.pyx":182 + * if len(objs.shape) == 1: + * objs = objs.reshape((1,objs.shape[0])) + * elif isrle: # <<<<<<<<<<<<<< + * objs = _frString(objs) + * else: + */ + goto __pyx_L16; + } + + /* "pycocotools/_mask.pyx":185 + * objs = _frString(objs) + * else: + * raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') # <<<<<<<<<<<<<< + * else: + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_Raise(__pyx_t_7, 0, 0, 0); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __PYX_ERR(0, 185, __pyx_L1_error) + } + __pyx_L16:; + + /* "pycocotools/_mask.pyx":174 + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + * objs = objs.astype(np.double) + * elif type(objs) == list: # <<<<<<<<<<<<<< + * # check if list is in box format and convert it to np.ndarray + * isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + */ + goto __pyx_L4; + } + + /* "pycocotools/_mask.pyx":187 + * raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') + * else: + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') # <<<<<<<<<<<<<< + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + /*else*/ { + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_Raise(__pyx_t_7, 0, 0, 0); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __PYX_ERR(0, 187, __pyx_L1_error) + } + __pyx_L4:; + + /* "pycocotools/_mask.pyx":188 + * else: + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + * return objs # <<<<<<<<<<<<<< + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":164 + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): # <<<<<<<<<<<<<< + * if len(objs) == 0: + * return objs + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("pycocotools._mask.iou._preproc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_isbox); + __Pyx_XDECREF(__pyx_v_isrle); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":189 + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_3_rleIou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_3iou_3_rleIou = {"_rleIou", (PyCFunction)__pyx_pw_11pycocotools_5_mask_3iou_3_rleIou, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_3_rleIou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_dt = 0; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_gt = 0; + PyArrayObject *__pyx_v_iscrowd = 0; + siz __pyx_v_m; + siz __pyx_v_n; + PyArrayObject *__pyx_v__iou = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_rleIou (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dt,&__pyx_n_s_gt,&__pyx_n_s_iscrowd,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_iou,0}; + PyObject* values[6] = {0,0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gt)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, 1); __PYX_ERR(0, 189, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iscrowd)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, 2); __PYX_ERR(0, 189, __pyx_L3_error) + } + case 3: + if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, 3); __PYX_ERR(0, 189, __pyx_L3_error) + } + case 4: + if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, 4); __PYX_ERR(0, 189, __pyx_L3_error) + } + case 5: + if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iou)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, 5); __PYX_ERR(0, 189, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_rleIou") < 0)) __PYX_ERR(0, 189, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + } + __pyx_v_dt = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)values[0]); + __pyx_v_gt = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)values[1]); + __pyx_v_iscrowd = ((PyArrayObject *)values[2]); + __pyx_v_m = __Pyx_PyInt_As_siz(values[3]); if (unlikely((__pyx_v_m == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 189, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_siz(values[4]); if (unlikely((__pyx_v_n == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 189, __pyx_L3_error) + __pyx_v__iou = ((PyArrayObject *)values[5]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("_rleIou", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 189, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.iou._rleIou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dt), __pyx_ptype_11pycocotools_5_mask_RLEs, 1, "dt", 0))) __PYX_ERR(0, 189, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gt), __pyx_ptype_11pycocotools_5_mask_RLEs, 1, "gt", 0))) __PYX_ERR(0, 189, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iscrowd), __pyx_ptype_5numpy_ndarray, 1, "iscrowd", 0))) __PYX_ERR(0, 189, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__iou), __pyx_ptype_5numpy_ndarray, 1, "_iou", 0))) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_r = __pyx_pf_11pycocotools_5_mask_3iou_2_rleIou(__pyx_self, __pyx_v_dt, __pyx_v_gt, __pyx_v_iscrowd, __pyx_v_m, __pyx_v_n, __pyx_v__iou); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_2_rleIou(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_dt, struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou) { + __Pyx_LocalBuf_ND __pyx_pybuffernd__iou; + __Pyx_Buffer __pyx_pybuffer__iou; + __Pyx_LocalBuf_ND __pyx_pybuffernd_iscrowd; + __Pyx_Buffer __pyx_pybuffer_iscrowd; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_rleIou", 0); + __pyx_pybuffer_iscrowd.pybuffer.buf = NULL; + __pyx_pybuffer_iscrowd.refcount = 0; + __pyx_pybuffernd_iscrowd.data = NULL; + __pyx_pybuffernd_iscrowd.rcbuffer = &__pyx_pybuffer_iscrowd; + __pyx_pybuffer__iou.pybuffer.buf = NULL; + __pyx_pybuffer__iou.refcount = 0; + __pyx_pybuffernd__iou.data = NULL; + __pyx_pybuffernd__iou.rcbuffer = &__pyx_pybuffer__iou; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer, (PyObject*)__pyx_v_iscrowd, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 189, __pyx_L1_error) + } + __pyx_pybuffernd_iscrowd.diminfo[0].strides = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_iscrowd.diminfo[0].shape = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.shape[0]; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__iou.rcbuffer->pybuffer, (PyObject*)__pyx_v__iou, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 189, __pyx_L1_error) + } + __pyx_pybuffernd__iou.diminfo[0].strides = __pyx_pybuffernd__iou.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__iou.diminfo[0].shape = __pyx_pybuffernd__iou.rcbuffer->pybuffer.shape[0]; + + /* "pycocotools/_mask.pyx":190 + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) # <<<<<<<<<<<<<< + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + */ + rleIou(((RLE *)__pyx_v_dt->_R), ((RLE *)__pyx_v_gt->_R), __pyx_v_m, __pyx_v_n, ((byte *)__pyx_v_iscrowd->data), ((double *)__pyx_v__iou->data)); + + /* "pycocotools/_mask.pyx":189 + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__iou.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.iou._rleIou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__iou.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":191 + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_5_bbIou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_3iou_5_bbIou = {"_bbIou", (PyCFunction)__pyx_pw_11pycocotools_5_mask_3iou_5_bbIou, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_5_bbIou(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyArrayObject *__pyx_v_dt = 0; + PyArrayObject *__pyx_v_gt = 0; + PyArrayObject *__pyx_v_iscrowd = 0; + siz __pyx_v_m; + siz __pyx_v_n; + PyArrayObject *__pyx_v__iou = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_bbIou (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dt,&__pyx_n_s_gt,&__pyx_n_s_iscrowd,&__pyx_n_s_m,&__pyx_n_s_n,&__pyx_n_s_iou,0}; + PyObject* values[6] = {0,0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gt)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, 1); __PYX_ERR(0, 191, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iscrowd)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, 2); __PYX_ERR(0, 191, __pyx_L3_error) + } + case 3: + if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, 3); __PYX_ERR(0, 191, __pyx_L3_error) + } + case 4: + if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, 4); __PYX_ERR(0, 191, __pyx_L3_error) + } + case 5: + if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iou)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, 5); __PYX_ERR(0, 191, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_bbIou") < 0)) __PYX_ERR(0, 191, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + } + __pyx_v_dt = ((PyArrayObject *)values[0]); + __pyx_v_gt = ((PyArrayObject *)values[1]); + __pyx_v_iscrowd = ((PyArrayObject *)values[2]); + __pyx_v_m = __Pyx_PyInt_As_siz(values[3]); if (unlikely((__pyx_v_m == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 191, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_siz(values[4]); if (unlikely((__pyx_v_n == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 191, __pyx_L3_error) + __pyx_v__iou = ((PyArrayObject *)values[5]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("_bbIou", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 191, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.iou._bbIou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dt), __pyx_ptype_5numpy_ndarray, 1, "dt", 0))) __PYX_ERR(0, 191, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gt), __pyx_ptype_5numpy_ndarray, 1, "gt", 0))) __PYX_ERR(0, 191, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iscrowd), __pyx_ptype_5numpy_ndarray, 1, "iscrowd", 0))) __PYX_ERR(0, 191, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__iou), __pyx_ptype_5numpy_ndarray, 1, "_iou", 0))) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_r = __pyx_pf_11pycocotools_5_mask_3iou_4_bbIou(__pyx_self, __pyx_v_dt, __pyx_v_gt, __pyx_v_iscrowd, __pyx_v_m, __pyx_v_n, __pyx_v__iou); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_4_bbIou(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_dt, PyArrayObject *__pyx_v_gt, PyArrayObject *__pyx_v_iscrowd, siz __pyx_v_m, siz __pyx_v_n, PyArrayObject *__pyx_v__iou) { + __Pyx_LocalBuf_ND __pyx_pybuffernd__iou; + __Pyx_Buffer __pyx_pybuffer__iou; + __Pyx_LocalBuf_ND __pyx_pybuffernd_dt; + __Pyx_Buffer __pyx_pybuffer_dt; + __Pyx_LocalBuf_ND __pyx_pybuffernd_gt; + __Pyx_Buffer __pyx_pybuffer_gt; + __Pyx_LocalBuf_ND __pyx_pybuffernd_iscrowd; + __Pyx_Buffer __pyx_pybuffer_iscrowd; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_bbIou", 0); + __pyx_pybuffer_dt.pybuffer.buf = NULL; + __pyx_pybuffer_dt.refcount = 0; + __pyx_pybuffernd_dt.data = NULL; + __pyx_pybuffernd_dt.rcbuffer = &__pyx_pybuffer_dt; + __pyx_pybuffer_gt.pybuffer.buf = NULL; + __pyx_pybuffer_gt.refcount = 0; + __pyx_pybuffernd_gt.data = NULL; + __pyx_pybuffernd_gt.rcbuffer = &__pyx_pybuffer_gt; + __pyx_pybuffer_iscrowd.pybuffer.buf = NULL; + __pyx_pybuffer_iscrowd.refcount = 0; + __pyx_pybuffernd_iscrowd.data = NULL; + __pyx_pybuffernd_iscrowd.rcbuffer = &__pyx_pybuffer_iscrowd; + __pyx_pybuffer__iou.pybuffer.buf = NULL; + __pyx_pybuffer__iou.refcount = 0; + __pyx_pybuffernd__iou.data = NULL; + __pyx_pybuffernd__iou.rcbuffer = &__pyx_pybuffer__iou; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dt.rcbuffer->pybuffer, (PyObject*)__pyx_v_dt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 191, __pyx_L1_error) + } + __pyx_pybuffernd_dt.diminfo[0].strides = __pyx_pybuffernd_dt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dt.diminfo[0].shape = __pyx_pybuffernd_dt.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_dt.diminfo[1].strides = __pyx_pybuffernd_dt.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_dt.diminfo[1].shape = __pyx_pybuffernd_dt.rcbuffer->pybuffer.shape[1]; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gt.rcbuffer->pybuffer, (PyObject*)__pyx_v_gt, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 191, __pyx_L1_error) + } + __pyx_pybuffernd_gt.diminfo[0].strides = __pyx_pybuffernd_gt.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gt.diminfo[0].shape = __pyx_pybuffernd_gt.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_gt.diminfo[1].strides = __pyx_pybuffernd_gt.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_gt.diminfo[1].shape = __pyx_pybuffernd_gt.rcbuffer->pybuffer.shape[1]; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer, (PyObject*)__pyx_v_iscrowd, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 191, __pyx_L1_error) + } + __pyx_pybuffernd_iscrowd.diminfo[0].strides = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_iscrowd.diminfo[0].shape = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.shape[0]; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd__iou.rcbuffer->pybuffer, (PyObject*)__pyx_v__iou, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 191, __pyx_L1_error) + } + __pyx_pybuffernd__iou.diminfo[0].strides = __pyx_pybuffernd__iou.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd__iou.diminfo[0].shape = __pyx_pybuffernd__iou.rcbuffer->pybuffer.shape[0]; + + /* "pycocotools/_mask.pyx":192 + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) # <<<<<<<<<<<<<< + * def _len(obj): + * cdef siz N = 0 + */ + bbIou(((BB)__pyx_v_dt->data), ((BB)__pyx_v_gt->data), __pyx_v_m, __pyx_v_n, ((byte *)__pyx_v_iscrowd->data), ((double *)__pyx_v__iou->data)); + + /* "pycocotools/_mask.pyx":191 + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__iou.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dt.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gt.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.iou._bbIou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd__iou.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dt.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gt.rcbuffer->pybuffer); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":193 + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): # <<<<<<<<<<<<<< + * cdef siz N = 0 + * if type(obj) == RLEs: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_7_len(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_3iou_7_len = {"_len", (PyCFunction)__pyx_pw_11pycocotools_5_mask_3iou_7_len, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_3iou_7_len(PyObject *__pyx_self, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_len (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_3iou_6_len(__pyx_self, ((PyObject *)__pyx_v_obj)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_3iou_6_len(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) { + siz __pyx_v_N; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + siz __pyx_t_3; + Py_ssize_t __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("_len", 0); + + /* "pycocotools/_mask.pyx":194 + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): + * cdef siz N = 0 # <<<<<<<<<<<<<< + * if type(obj) == RLEs: + * N = obj.n + */ + __pyx_v_N = 0; + + /* "pycocotools/_mask.pyx":195 + * def _len(obj): + * cdef siz N = 0 + * if type(obj) == RLEs: # <<<<<<<<<<<<<< + * N = obj.n + * elif len(obj)==0: + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_obj)), ((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":196 + * cdef siz N = 0 + * if type(obj) == RLEs: + * N = obj.n # <<<<<<<<<<<<<< + * elif len(obj)==0: + * pass + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_As_siz(__pyx_t_1); if (unlikely((__pyx_t_3 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_N = __pyx_t_3; + + /* "pycocotools/_mask.pyx":195 + * def _len(obj): + * cdef siz N = 0 + * if type(obj) == RLEs: # <<<<<<<<<<<<<< + * N = obj.n + * elif len(obj)==0: + */ + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":197 + * if type(obj) == RLEs: + * N = obj.n + * elif len(obj)==0: # <<<<<<<<<<<<<< + * pass + * elif type(obj) == np.ndarray: + */ + __pyx_t_4 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 197, __pyx_L1_error) + __pyx_t_2 = ((__pyx_t_4 == 0) != 0); + if (__pyx_t_2) { + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":199 + * elif len(obj)==0: + * pass + * elif type(obj) == np.ndarray: # <<<<<<<<<<<<<< + * N = obj.shape[0] + * return N + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_obj)), ((PyObject *)__pyx_ptype_5numpy_ndarray), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 199, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":200 + * pass + * elif type(obj) == np.ndarray: + * N = obj.shape[0] # <<<<<<<<<<<<<< + * return N + * # convert iscrowd to numpy array + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyInt_As_siz(__pyx_t_5); if (unlikely((__pyx_t_3 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_N = __pyx_t_3; + + /* "pycocotools/_mask.pyx":199 + * elif len(obj)==0: + * pass + * elif type(obj) == np.ndarray: # <<<<<<<<<<<<<< + * N = obj.shape[0] + * return N + */ + } + __pyx_L3:; + + /* "pycocotools/_mask.pyx":201 + * elif type(obj) == np.ndarray: + * N = obj.shape[0] + * return N # <<<<<<<<<<<<<< + * # convert iscrowd to numpy array + * cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = __Pyx_PyInt_From_siz(__pyx_v_N); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":193 + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): # <<<<<<<<<<<<<< + * cdef siz N = 0 + * if type(obj) == RLEs: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("pycocotools._mask.iou._len", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":163 + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): # <<<<<<<<<<<<<< + * def _preproc(objs): + * if len(objs) == 0: + */ + +static PyObject *__pyx_pf_11pycocotools_5_mask_12iou(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt, PyObject *__pyx_v_gt, PyObject *__pyx_v_pyiscrowd) { + PyObject *__pyx_v__preproc = 0; + PyObject *__pyx_v__rleIou = 0; + PyObject *__pyx_v__bbIou = 0; + PyObject *__pyx_v__len = 0; + PyArrayObject *__pyx_v_iscrowd = 0; + siz __pyx_v_m; + siz __pyx_v_n; + double *__pyx_v__iou; + npy_intp __pyx_v_shape[1]; + PyObject *__pyx_v__iouFun = NULL; + PyObject *__pyx_v_iou = NULL; + __Pyx_LocalBuf_ND __pyx_pybuffernd_iscrowd; + __Pyx_Buffer __pyx_pybuffer_iscrowd; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyArrayObject *__pyx_t_6 = NULL; + siz __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + __Pyx_RefNannySetupContext("iou", 0); + __Pyx_INCREF(__pyx_v_dt); + __Pyx_INCREF(__pyx_v_gt); + __pyx_pybuffer_iscrowd.pybuffer.buf = NULL; + __pyx_pybuffer_iscrowd.refcount = 0; + __pyx_pybuffernd_iscrowd.data = NULL; + __pyx_pybuffernd_iscrowd.rcbuffer = &__pyx_pybuffer_iscrowd; + + /* "pycocotools/_mask.pyx":164 + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): # <<<<<<<<<<<<<< + * if len(objs) == 0: + * return objs + */ + __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_3iou_1_preproc, 0, __pyx_n_s_iou_locals__preproc, NULL, __pyx_n_s_pycocotools__mask, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__preproc = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":189 + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_3iou_3_rleIou, 0, __pyx_n_s_iou_locals__rleIou, NULL, __pyx_n_s_pycocotools__mask, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__rleIou = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":191 + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): + */ + __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_3iou_5_bbIou, 0, __pyx_n_s_iou_locals__bbIou, NULL, __pyx_n_s_pycocotools__mask, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__bbIou = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":193 + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): # <<<<<<<<<<<<<< + * cdef siz N = 0 + * if type(obj) == RLEs: + */ + __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_3iou_7_len, 0, __pyx_n_s_iou_locals__len, NULL, __pyx_n_s_pycocotools__mask, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__len = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":203 + * return N + * # convert iscrowd to numpy array + * cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) # <<<<<<<<<<<<<< + * # simple type checking + * cdef siz m, n + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_pyiscrowd); + __Pyx_GIVEREF(__pyx_v_pyiscrowd); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyiscrowd); + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 203, __pyx_L1_error) + __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + __pyx_v_iscrowd = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.buf = NULL; + __PYX_ERR(0, 203, __pyx_L1_error) + } else {__pyx_pybuffernd_iscrowd.diminfo[0].strides = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_iscrowd.diminfo[0].shape = __pyx_pybuffernd_iscrowd.rcbuffer->pybuffer.shape[0]; + } + } + __pyx_t_6 = 0; + __pyx_v_iscrowd = ((PyArrayObject *)__pyx_t_5); + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":206 + * # simple type checking + * cdef siz m, n + * dt = _preproc(dt) # <<<<<<<<<<<<<< + * gt = _preproc(gt) + * m = _len(dt) + */ + __pyx_t_5 = __pyx_pf_11pycocotools_5_mask_3iou__preproc(__pyx_v__preproc, __pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_5); + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":207 + * cdef siz m, n + * dt = _preproc(dt) + * gt = _preproc(gt) # <<<<<<<<<<<<<< + * m = _len(dt) + * n = _len(gt) + */ + __pyx_t_5 = __pyx_pf_11pycocotools_5_mask_3iou__preproc(__pyx_v__preproc, __pyx_v_gt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF_SET(__pyx_v_gt, __pyx_t_5); + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":208 + * dt = _preproc(dt) + * gt = _preproc(gt) + * m = _len(dt) # <<<<<<<<<<<<<< + * n = _len(gt) + * if m == 0 or n == 0: + */ + __pyx_t_5 = __pyx_pf_11pycocotools_5_mask_3iou_6_len(__pyx_v__len, __pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyInt_As_siz(__pyx_t_5); if (unlikely((__pyx_t_7 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_m = __pyx_t_7; + + /* "pycocotools/_mask.pyx":209 + * gt = _preproc(gt) + * m = _len(dt) + * n = _len(gt) # <<<<<<<<<<<<<< + * if m == 0 or n == 0: + * return [] + */ + __pyx_t_5 = __pyx_pf_11pycocotools_5_mask_3iou_6_len(__pyx_v__len, __pyx_v_gt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyInt_As_siz(__pyx_t_5); if (unlikely((__pyx_t_7 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_n = __pyx_t_7; + + /* "pycocotools/_mask.pyx":210 + * m = _len(dt) + * n = _len(gt) + * if m == 0 or n == 0: # <<<<<<<<<<<<<< + * return [] + * if not type(dt) == type(gt): + */ + __pyx_t_9 = ((__pyx_v_m == 0) != 0); + if (!__pyx_t_9) { + } else { + __pyx_t_8 = __pyx_t_9; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_9 = ((__pyx_v_n == 0) != 0); + __pyx_t_8 = __pyx_t_9; + __pyx_L4_bool_binop_done:; + if (__pyx_t_8) { + + /* "pycocotools/_mask.pyx":211 + * n = _len(gt) + * if m == 0 or n == 0: + * return [] # <<<<<<<<<<<<<< + * if not type(dt) == type(gt): + * raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":210 + * m = _len(dt) + * n = _len(gt) + * if m == 0 or n == 0: # <<<<<<<<<<<<<< + * return [] + * if not type(dt) == type(gt): + */ + } + + /* "pycocotools/_mask.pyx":212 + * if m == 0 or n == 0: + * return [] + * if not type(dt) == type(gt): # <<<<<<<<<<<<<< + * raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') + * + */ + __pyx_t_5 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dt)), ((PyObject *)Py_TYPE(__pyx_v_gt)), Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_9 = ((!__pyx_t_8) != 0); + if (__pyx_t_9) { + + /* "pycocotools/_mask.pyx":213 + * return [] + * if not type(dt) == type(gt): + * raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') # <<<<<<<<<<<<<< + * + * # define local variables + */ + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(0, 213, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":212 + * if m == 0 or n == 0: + * return [] + * if not type(dt) == type(gt): # <<<<<<<<<<<<<< + * raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') + * + */ + } + + /* "pycocotools/_mask.pyx":216 + * + * # define local variables + * cdef double* _iou = 0 # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * # check type and assign iou function + */ + __pyx_v__iou = ((double *)0); + + /* "pycocotools/_mask.pyx":219 + * cdef np.npy_intp shape[1] + * # check type and assign iou function + * if type(dt) == RLEs: # <<<<<<<<<<<<<< + * _iouFun = _rleIou + * elif type(dt) == np.ndarray: + */ + __pyx_t_5 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dt)), ((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_9) { + + /* "pycocotools/_mask.pyx":220 + * # check type and assign iou function + * if type(dt) == RLEs: + * _iouFun = _rleIou # <<<<<<<<<<<<<< + * elif type(dt) == np.ndarray: + * _iouFun = _bbIou + */ + __Pyx_INCREF(__pyx_v__rleIou); + __pyx_v__iouFun = __pyx_v__rleIou; + + /* "pycocotools/_mask.pyx":219 + * cdef np.npy_intp shape[1] + * # check type and assign iou function + * if type(dt) == RLEs: # <<<<<<<<<<<<<< + * _iouFun = _rleIou + * elif type(dt) == np.ndarray: + */ + goto __pyx_L7; + } + + /* "pycocotools/_mask.pyx":221 + * if type(dt) == RLEs: + * _iouFun = _rleIou + * elif type(dt) == np.ndarray: # <<<<<<<<<<<<<< + * _iouFun = _bbIou + * else: + */ + __pyx_t_5 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dt)), ((PyObject *)__pyx_ptype_5numpy_ndarray), Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 221, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_9) { + + /* "pycocotools/_mask.pyx":222 + * _iouFun = _rleIou + * elif type(dt) == np.ndarray: + * _iouFun = _bbIou # <<<<<<<<<<<<<< + * else: + * raise Exception('input data type not allowed.') + */ + __Pyx_INCREF(__pyx_v__bbIou); + __pyx_v__iouFun = __pyx_v__bbIou; + + /* "pycocotools/_mask.pyx":221 + * if type(dt) == RLEs: + * _iouFun = _rleIou + * elif type(dt) == np.ndarray: # <<<<<<<<<<<<<< + * _iouFun = _bbIou + * else: + */ + goto __pyx_L7; + } + + /* "pycocotools/_mask.pyx":224 + * _iouFun = _bbIou + * else: + * raise Exception('input data type not allowed.') # <<<<<<<<<<<<<< + * _iou = malloc(m*n* sizeof(double)) + * iou = np.zeros((m*n, ), dtype=np.double) + */ + /*else*/ { + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(0, 224, __pyx_L1_error) + } + __pyx_L7:; + + /* "pycocotools/_mask.pyx":225 + * else: + * raise Exception('input data type not allowed.') + * _iou = malloc(m*n* sizeof(double)) # <<<<<<<<<<<<<< + * iou = np.zeros((m*n, ), dtype=np.double) + * shape[0] = m*n + */ + __pyx_v__iou = ((double *)malloc(((__pyx_v_m * __pyx_v_n) * (sizeof(double))))); + + /* "pycocotools/_mask.pyx":226 + * raise Exception('input data type not allowed.') + * _iou = malloc(m*n* sizeof(double)) + * iou = np.zeros((m*n, ), dtype=np.double) # <<<<<<<<<<<<<< + * shape[0] = m*n + * iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyInt_From_siz((__pyx_v_m * __pyx_v_n)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_double); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_iou = __pyx_t_4; + __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":227 + * _iou = malloc(m*n* sizeof(double)) + * iou = np.zeros((m*n, ), dtype=np.double) + * shape[0] = m*n # <<<<<<<<<<<<<< + * iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) + * PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) + */ + (__pyx_v_shape[0]) = (((npy_intp)__pyx_v_m) * __pyx_v_n); + + /* "pycocotools/_mask.pyx":228 + * iou = np.zeros((m*n, ), dtype=np.double) + * shape[0] = m*n + * iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) # <<<<<<<<<<<<<< + * PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) + * _iouFun(dt, gt, iscrowd, m, n, iou) + */ + __pyx_t_4 = PyArray_SimpleNewFromData(1, __pyx_v_shape, NPY_DOUBLE, __pyx_v__iou); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF_SET(__pyx_v_iou, __pyx_t_4); + __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":229 + * shape[0] = m*n + * iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) + * PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) # <<<<<<<<<<<<<< + * _iouFun(dt, gt, iscrowd, m, n, iou) + * return iou.reshape((m,n), order='F') + */ + if (!(likely(((__pyx_v_iou) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_iou, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 229, __pyx_L1_error) + PyArray_ENABLEFLAGS(((PyArrayObject *)__pyx_v_iou), NPY_OWNDATA); + + /* "pycocotools/_mask.pyx":230 + * iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) + * PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) + * _iouFun(dt, gt, iscrowd, m, n, iou) # <<<<<<<<<<<<<< + * return iou.reshape((m,n), order='F') + * + */ + __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v__iouFun); + __pyx_t_3 = __pyx_v__iouFun; __pyx_t_2 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_v_dt, __pyx_v_gt, ((PyObject *)__pyx_v_iscrowd), __pyx_t_1, __pyx_t_5, __pyx_v_iou}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_v_dt, __pyx_v_gt, ((PyObject *)__pyx_v_iscrowd), __pyx_t_1, __pyx_t_5, __pyx_v_iou}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_2) { + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __pyx_t_2 = NULL; + } + __Pyx_INCREF(__pyx_v_dt); + __Pyx_GIVEREF(__pyx_v_dt); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_dt); + __Pyx_INCREF(__pyx_v_gt); + __Pyx_GIVEREF(__pyx_v_gt); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_gt); + __Pyx_INCREF(((PyObject *)__pyx_v_iscrowd)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_iscrowd)); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, ((PyObject *)__pyx_v_iscrowd)); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_t_5); + __Pyx_INCREF(__pyx_v_iou); + __Pyx_GIVEREF(__pyx_v_iou); + PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_v_iou); + __pyx_t_1 = 0; + __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "pycocotools/_mask.pyx":231 + * PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) + * _iouFun(dt, gt, iscrowd, m, n, iou) + * return iou.reshape((m,n), order='F') # <<<<<<<<<<<<<< + * + * def toBbox( rleObjs ): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_iou, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyInt_From_siz(__pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_11); + __pyx_t_3 = 0; + __pyx_t_11 = 0; + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_F) < 0) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":163 + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): # <<<<<<<<<<<<<< + * def _preproc(objs): + * if len(objs) == 0: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_11); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.iou", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_iscrowd.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XDECREF(__pyx_v__preproc); + __Pyx_XDECREF(__pyx_v__rleIou); + __Pyx_XDECREF(__pyx_v__bbIou); + __Pyx_XDECREF(__pyx_v__len); + __Pyx_XDECREF((PyObject *)__pyx_v_iscrowd); + __Pyx_XDECREF(__pyx_v__iouFun); + __Pyx_XDECREF(__pyx_v_iou); + __Pyx_XDECREF(__pyx_v_dt); + __Pyx_XDECREF(__pyx_v_gt); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":233 + * return iou.reshape((m,n), order='F') + * + * def toBbox( rleObjs ): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_15toBbox(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_15toBbox = {"toBbox", (PyCFunction)__pyx_pw_11pycocotools_5_mask_15toBbox, METH_O, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_15toBbox(PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("toBbox (wrapper)", 0); + __pyx_r = __pyx_pf_11pycocotools_5_mask_14toBbox(__pyx_self, ((PyObject *)__pyx_v_rleObjs)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_14toBbox(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rleObjs) { + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = 0; + siz __pyx_v_n; + BB __pyx_v__bb; + npy_intp __pyx_v_shape[1]; + PyObject *__pyx_v_bb = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + siz __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("toBbox", 0); + + /* "pycocotools/_mask.pyx":234 + * + * def toBbox( rleObjs ): + * cdef RLEs Rs = _frString(rleObjs) # <<<<<<<<<<<<<< + * cdef siz n = Rs.n + * cdef BB _bb = malloc(4*n* sizeof(double)) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_frString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_rleObjs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_rleObjs}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_rleObjs); + __Pyx_GIVEREF(__pyx_v_rleObjs); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_rleObjs); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_11pycocotools_5_mask_RLEs))))) __PYX_ERR(0, 234, __pyx_L1_error) + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":235 + * def toBbox( rleObjs ): + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n # <<<<<<<<<<<<<< + * cdef BB _bb = malloc(4*n* sizeof(double)) + * rleToBbox( Rs._R, _bb, n ) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_Rs), __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyInt_As_siz(__pyx_t_1); if (unlikely((__pyx_t_5 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_n = __pyx_t_5; + + /* "pycocotools/_mask.pyx":236 + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n + * cdef BB _bb = malloc(4*n* sizeof(double)) # <<<<<<<<<<<<<< + * rleToBbox( Rs._R, _bb, n ) + * cdef np.npy_intp shape[1] + */ + __pyx_v__bb = ((BB)malloc(((4 * __pyx_v_n) * (sizeof(double))))); + + /* "pycocotools/_mask.pyx":237 + * cdef siz n = Rs.n + * cdef BB _bb = malloc(4*n* sizeof(double)) + * rleToBbox( Rs._R, _bb, n ) # <<<<<<<<<<<<<< + * cdef np.npy_intp shape[1] + * shape[0] = 4*n + */ + rleToBbox(((RLE const *)__pyx_v_Rs->_R), __pyx_v__bb, __pyx_v_n); + + /* "pycocotools/_mask.pyx":239 + * rleToBbox( Rs._R, _bb, n ) + * cdef np.npy_intp shape[1] + * shape[0] = 4*n # <<<<<<<<<<<<<< + * bb = np.array((1,4*n), dtype=np.double) + * bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) + */ + (__pyx_v_shape[0]) = (((npy_intp)4) * __pyx_v_n); + + /* "pycocotools/_mask.pyx":240 + * cdef np.npy_intp shape[1] + * shape[0] = 4*n + * bb = np.array((1,4*n), dtype=np.double) # <<<<<<<<<<<<<< + * bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) + * PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_siz((4 * __pyx_v_n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_1); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_double); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_bb = __pyx_t_6; + __pyx_t_6 = 0; + + /* "pycocotools/_mask.pyx":241 + * shape[0] = 4*n + * bb = np.array((1,4*n), dtype=np.double) + * bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) # <<<<<<<<<<<<<< + * PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) + * return bb + */ + __pyx_t_4 = PyArray_SimpleNewFromData(1, __pyx_v_shape, NPY_DOUBLE, __pyx_v__bb); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); + __Pyx_INCREF(__pyx_int_4); + __Pyx_GIVEREF(__pyx_int_4); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_4); + __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (!__pyx_t_4) { + __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_6); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_bb, __pyx_t_6); + __pyx_t_6 = 0; + + /* "pycocotools/_mask.pyx":242 + * bb = np.array((1,4*n), dtype=np.double) + * bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) + * PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) # <<<<<<<<<<<<<< + * return bb + * + */ + if (!(likely(((__pyx_v_bb) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_bb, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 242, __pyx_L1_error) + PyArray_ENABLEFLAGS(((PyArrayObject *)__pyx_v_bb), NPY_OWNDATA); + + /* "pycocotools/_mask.pyx":243 + * bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) + * PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) + * return bb # <<<<<<<<<<<<<< + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_bb); + __pyx_r = __pyx_v_bb; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":233 + * return iou.reshape((m,n), order='F') + * + * def toBbox( rleObjs ): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("pycocotools._mask.toBbox", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_bb); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":245 + * return bb + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_17frBbox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_17frBbox = {"frBbox", (PyCFunction)__pyx_pw_11pycocotools_5_mask_17frBbox, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_17frBbox(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyArrayObject *__pyx_v_bb = 0; + siz __pyx_v_h; + siz __pyx_v_w; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("frBbox (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bb,&__pyx_n_s_h,&__pyx_n_s_w,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bb)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frBbox", 1, 3, 3, 1); __PYX_ERR(0, 245, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frBbox", 1, 3, 3, 2); __PYX_ERR(0, 245, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "frBbox") < 0)) __PYX_ERR(0, 245, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_bb = ((PyArrayObject *)values[0]); + __pyx_v_h = __Pyx_PyInt_As_siz(values[1]); if (unlikely((__pyx_v_h == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 245, __pyx_L3_error) + __pyx_v_w = __Pyx_PyInt_As_siz(values[2]); if (unlikely((__pyx_v_w == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 245, __pyx_L3_error) + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("frBbox", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 245, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.frBbox", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bb), __pyx_ptype_5numpy_ndarray, 1, "bb", 0))) __PYX_ERR(0, 245, __pyx_L1_error) + __pyx_r = __pyx_pf_11pycocotools_5_mask_16frBbox(__pyx_self, __pyx_v_bb, __pyx_v_h, __pyx_v_w); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_16frBbox(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_bb, siz __pyx_v_h, siz __pyx_v_w) { + siz __pyx_v_n; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = NULL; + PyObject *__pyx_v_objs = NULL; + __Pyx_LocalBuf_ND __pyx_pybuffernd_bb; + __Pyx_Buffer __pyx_pybuffer_bb; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("frBbox", 0); + __pyx_pybuffer_bb.pybuffer.buf = NULL; + __pyx_pybuffer_bb.refcount = 0; + __pyx_pybuffernd_bb.data = NULL; + __pyx_pybuffernd_bb.rcbuffer = &__pyx_pybuffer_bb; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_bb.rcbuffer->pybuffer, (PyObject*)__pyx_v_bb, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 245, __pyx_L1_error) + } + __pyx_pybuffernd_bb.diminfo[0].strides = __pyx_pybuffernd_bb.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_bb.diminfo[0].shape = __pyx_pybuffernd_bb.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_bb.diminfo[1].strides = __pyx_pybuffernd_bb.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_bb.diminfo[1].shape = __pyx_pybuffernd_bb.rcbuffer->pybuffer.shape[1]; + + /* "pycocotools/_mask.pyx":246 + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): + * cdef siz n = bb.shape[0] # <<<<<<<<<<<<<< + * Rs = RLEs(n) + * rleFrBbox( Rs._R, bb.data, h, w, n ) + */ + __pyx_v_n = (__pyx_v_bb->dimensions[0]); + + /* "pycocotools/_mask.pyx":247 + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) # <<<<<<<<<<<<<< + * rleFrBbox( Rs._R, bb.data, h, w, n ) + * objs = _toString(Rs) + */ + __pyx_t_1 = __Pyx_PyInt_From_siz(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":248 + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) + * rleFrBbox( Rs._R, bb.data, h, w, n ) # <<<<<<<<<<<<<< + * objs = _toString(Rs) + * return objs + */ + rleFrBbox(((RLE *)__pyx_v_Rs->_R), ((BB const )__pyx_v_bb->data), __pyx_v_h, __pyx_v_w, __pyx_v_n); + + /* "pycocotools/_mask.pyx":249 + * Rs = RLEs(n) + * rleFrBbox( Rs._R, bb.data, h, w, n ) + * objs = _toString(Rs) # <<<<<<<<<<<<<< + * return objs + * + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_toString); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_Rs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_Rs)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_Rs)); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_Rs)); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_objs = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":250 + * rleFrBbox( Rs._R, bb.data, h, w, n ) + * objs = _toString(Rs) + * return objs # <<<<<<<<<<<<<< + * + * def frPoly( poly, siz h, siz w ): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":245 + * return bb + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_bb.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.frBbox", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_bb.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":252 + * return objs + * + * def frPoly( poly, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_19frPoly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_19frPoly = {"frPoly", (PyCFunction)__pyx_pw_11pycocotools_5_mask_19frPoly, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_19frPoly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_poly = 0; + siz __pyx_v_h; + siz __pyx_v_w; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("frPoly (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_poly,&__pyx_n_s_h,&__pyx_n_s_w,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_poly)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frPoly", 1, 3, 3, 1); __PYX_ERR(0, 252, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frPoly", 1, 3, 3, 2); __PYX_ERR(0, 252, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "frPoly") < 0)) __PYX_ERR(0, 252, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_poly = values[0]; + __pyx_v_h = __Pyx_PyInt_As_siz(values[1]); if (unlikely((__pyx_v_h == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 252, __pyx_L3_error) + __pyx_v_w = __Pyx_PyInt_As_siz(values[2]); if (unlikely((__pyx_v_w == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 252, __pyx_L3_error) + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("frPoly", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 252, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.frPoly", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_18frPoly(__pyx_self, __pyx_v_poly, __pyx_v_h, __pyx_v_w); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_18frPoly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_poly, siz __pyx_v_h, siz __pyx_v_w) { + PyArrayObject *__pyx_v_np_poly = 0; + Py_ssize_t __pyx_v_n; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = NULL; + PyObject *__pyx_v_i = NULL; + PyObject *__pyx_v_p = NULL; + PyObject *__pyx_v_objs = NULL; + __Pyx_LocalBuf_ND __pyx_pybuffernd_np_poly; + __Pyx_Buffer __pyx_pybuffer_np_poly; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *(*__pyx_t_4)(PyObject *); + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyArrayObject *__pyx_t_10 = NULL; + int __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + Py_ssize_t __pyx_t_15; + Py_ssize_t __pyx_t_16; + __Pyx_RefNannySetupContext("frPoly", 0); + __pyx_pybuffer_np_poly.pybuffer.buf = NULL; + __pyx_pybuffer_np_poly.refcount = 0; + __pyx_pybuffernd_np_poly.data = NULL; + __pyx_pybuffernd_np_poly.rcbuffer = &__pyx_pybuffer_np_poly; + + /* "pycocotools/_mask.pyx":254 + * def frPoly( poly, siz h, siz w ): + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) # <<<<<<<<<<<<<< + * Rs = RLEs(n) + * for i, p in enumerate(poly): + */ + __pyx_t_1 = PyObject_Length(__pyx_v_poly); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 254, __pyx_L1_error) + __pyx_v_n = __pyx_t_1; + + /* "pycocotools/_mask.pyx":255 + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) + * Rs = RLEs(n) # <<<<<<<<<<<<<< + * for i, p in enumerate(poly): + * np_poly = np.array(p, dtype=np.double, order='F') + */ + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Rs = ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":256 + * n = len(poly) + * Rs = RLEs(n) + * for i, p in enumerate(poly): # <<<<<<<<<<<<<< + * np_poly = np.array(p, dtype=np.double, order='F') + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + */ + __Pyx_INCREF(__pyx_int_0); + __pyx_t_2 = __pyx_int_0; + if (likely(PyList_CheckExact(__pyx_v_poly)) || PyTuple_CheckExact(__pyx_v_poly)) { + __pyx_t_3 = __pyx_v_poly; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; + __pyx_t_4 = NULL; + } else { + __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_poly); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 256, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 256, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_4(__pyx_t_3); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 256, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_5); + __pyx_t_5 = 0; + __Pyx_INCREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); + __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); + __pyx_t_2 = __pyx_t_5; + __pyx_t_5 = 0; + + /* "pycocotools/_mask.pyx":257 + * Rs = RLEs(n) + * for i, p in enumerate(poly): + * np_poly = np.array(p, dtype=np.double, order='F') # <<<<<<<<<<<<<< + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + * objs = _toString(Rs) + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_p); + __Pyx_GIVEREF(__pyx_v_p); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_p); + __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_double); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_order, __pyx_n_s_F) < 0) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_10 = ((PyArrayObject *)__pyx_t_9); + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_np_poly.rcbuffer->pybuffer); + __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_np_poly.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_11 < 0)) { + PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_np_poly.rcbuffer->pybuffer, (PyObject*)__pyx_v_np_poly, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); + __Pyx_RaiseBufferFallbackError(); + } else { + PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); + } + } + __pyx_pybuffernd_np_poly.diminfo[0].strides = __pyx_pybuffernd_np_poly.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_np_poly.diminfo[0].shape = __pyx_pybuffernd_np_poly.rcbuffer->pybuffer.shape[0]; + if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 257, __pyx_L1_error) + } + __pyx_t_10 = 0; + __Pyx_XDECREF_SET(__pyx_v_np_poly, ((PyArrayObject *)__pyx_t_9)); + __pyx_t_9 = 0; + + /* "pycocotools/_mask.pyx":258 + * for i, p in enumerate(poly): + * np_poly = np.array(p, dtype=np.double, order='F') + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) # <<<<<<<<<<<<<< + * objs = _toString(Rs) + * return objs + */ + __pyx_t_15 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_15 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) + __pyx_t_16 = PyObject_Length(((PyObject *)__pyx_v_np_poly)); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 258, __pyx_L1_error) + rleFrPoly(((RLE *)(&(__pyx_v_Rs->_R[__pyx_t_15]))), ((double const *)__pyx_v_np_poly->data), __Pyx_div_Py_ssize_t(__pyx_t_16, 2), __pyx_v_h, __pyx_v_w); + + /* "pycocotools/_mask.pyx":256 + * n = len(poly) + * Rs = RLEs(n) + * for i, p in enumerate(poly): # <<<<<<<<<<<<<< + * np_poly = np.array(p, dtype=np.double, order='F') + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":259 + * np_poly = np.array(p, dtype=np.double, order='F') + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + * objs = _toString(Rs) # <<<<<<<<<<<<<< + * return objs + * + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_toString); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_9) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_Rs)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_Rs)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_Rs)); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_Rs)); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_objs = __pyx_t_2; + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":260 + * rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + * objs = _toString(Rs) + * return objs # <<<<<<<<<<<<<< + * + * def frUncompressedRLE(ucRles, siz h, siz w): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":252 + * return objs + * + * def frPoly( poly, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_np_poly.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.frPoly", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_np_poly.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_np_poly); + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XDECREF(__pyx_v_i); + __Pyx_XDECREF(__pyx_v_p); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":262 + * return objs + * + * def frUncompressedRLE(ucRles, siz h, siz w): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.uint32_t, ndim=1] cnts + * cdef RLE R + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_21frUncompressedRLE(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_21frUncompressedRLE = {"frUncompressedRLE", (PyCFunction)__pyx_pw_11pycocotools_5_mask_21frUncompressedRLE, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_21frUncompressedRLE(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_ucRles = 0; + CYTHON_UNUSED siz __pyx_v_h; + CYTHON_UNUSED siz __pyx_v_w; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("frUncompressedRLE (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ucRles,&__pyx_n_s_h,&__pyx_n_s_w,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ucRles)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frUncompressedRLE", 1, 3, 3, 1); __PYX_ERR(0, 262, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frUncompressedRLE", 1, 3, 3, 2); __PYX_ERR(0, 262, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "frUncompressedRLE") < 0)) __PYX_ERR(0, 262, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_ucRles = values[0]; + __pyx_v_h = __Pyx_PyInt_As_siz(values[1]); if (unlikely((__pyx_v_h == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L3_error) + __pyx_v_w = __Pyx_PyInt_As_siz(values[2]); if (unlikely((__pyx_v_w == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L3_error) + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("frUncompressedRLE", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 262, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.frUncompressedRLE", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_20frUncompressedRLE(__pyx_self, __pyx_v_ucRles, __pyx_v_h, __pyx_v_w); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_20frUncompressedRLE(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ucRles, CYTHON_UNUSED siz __pyx_v_h, CYTHON_UNUSED siz __pyx_v_w) { + PyArrayObject *__pyx_v_cnts = 0; + RLE __pyx_v_R; + uint *__pyx_v_data; + Py_ssize_t __pyx_v_n; + PyObject *__pyx_v_objs = NULL; + Py_ssize_t __pyx_v_i; + struct __pyx_obj_11pycocotools_5_mask_RLEs *__pyx_v_Rs = NULL; + Py_ssize_t __pyx_v_j; + __Pyx_LocalBuf_ND __pyx_pybuffernd_cnts; + __Pyx_Buffer __pyx_pybuffer_cnts; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyArrayObject *__pyx_t_8 = NULL; + int __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + Py_ssize_t __pyx_t_13; + Py_ssize_t __pyx_t_14; + Py_ssize_t __pyx_t_15; + RLE __pyx_t_16; + siz __pyx_t_17; + int __pyx_t_18; + __Pyx_RefNannySetupContext("frUncompressedRLE", 0); + __pyx_pybuffer_cnts.pybuffer.buf = NULL; + __pyx_pybuffer_cnts.refcount = 0; + __pyx_pybuffernd_cnts.data = NULL; + __pyx_pybuffernd_cnts.rcbuffer = &__pyx_pybuffer_cnts; + + /* "pycocotools/_mask.pyx":266 + * cdef RLE R + * cdef uint *data + * n = len(ucRles) # <<<<<<<<<<<<<< + * objs = [] + * for i in range(n): + */ + __pyx_t_1 = PyObject_Length(__pyx_v_ucRles); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 266, __pyx_L1_error) + __pyx_v_n = __pyx_t_1; + + /* "pycocotools/_mask.pyx":267 + * cdef uint *data + * n = len(ucRles) + * objs = [] # <<<<<<<<<<<<<< + * for i in range(n): + * Rs = RLEs(1) + */ + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_objs = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":268 + * n = len(ucRles) + * objs = [] + * for i in range(n): # <<<<<<<<<<<<<< + * Rs = RLEs(1) + * cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) + */ + __pyx_t_1 = __pyx_v_n; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_1; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "pycocotools/_mask.pyx":269 + * objs = [] + * for i in range(n): + * Rs = RLEs(1) # <<<<<<<<<<<<<< + * cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) + * # time for malloc can be saved here but it's fine + */ + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_11pycocotools_5_mask_RLEs), __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_Rs, ((struct __pyx_obj_11pycocotools_5_mask_RLEs *)__pyx_t_2)); + __pyx_t_2 = 0; + + /* "pycocotools/_mask.pyx":270 + * for i in range(n): + * Rs = RLEs(1) + * cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) # <<<<<<<<<<<<<< + * # time for malloc can be saved here but it's fine + * data = malloc(len(cnts)* sizeof(uint)) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ucRles, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_counts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_uint32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 270, __pyx_L1_error) + __pyx_t_8 = ((PyArrayObject *)__pyx_t_7); + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cnts.rcbuffer->pybuffer); + __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cnts.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); + if (unlikely(__pyx_t_9 < 0)) { + PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cnts.rcbuffer->pybuffer, (PyObject*)__pyx_v_cnts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); + __Pyx_RaiseBufferFallbackError(); + } else { + PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); + } + } + __pyx_pybuffernd_cnts.diminfo[0].strides = __pyx_pybuffernd_cnts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cnts.diminfo[0].shape = __pyx_pybuffernd_cnts.rcbuffer->pybuffer.shape[0]; + if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 270, __pyx_L1_error) + } + __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_cnts, ((PyArrayObject *)__pyx_t_7)); + __pyx_t_7 = 0; + + /* "pycocotools/_mask.pyx":272 + * cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) + * # time for malloc can be saved here but it's fine + * data = malloc(len(cnts)* sizeof(uint)) # <<<<<<<<<<<<<< + * for j in range(len(cnts)): + * data[j] = cnts[j] + */ + __pyx_t_13 = PyObject_Length(((PyObject *)__pyx_v_cnts)); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 272, __pyx_L1_error) + __pyx_v_data = ((uint *)malloc((__pyx_t_13 * (sizeof(unsigned int))))); + + /* "pycocotools/_mask.pyx":273 + * # time for malloc can be saved here but it's fine + * data = malloc(len(cnts)* sizeof(uint)) + * for j in range(len(cnts)): # <<<<<<<<<<<<<< + * data[j] = cnts[j] + * R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) + */ + __pyx_t_13 = PyObject_Length(((PyObject *)__pyx_v_cnts)); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 273, __pyx_L1_error) + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { + __pyx_v_j = __pyx_t_14; + + /* "pycocotools/_mask.pyx":274 + * data = malloc(len(cnts)* sizeof(uint)) + * for j in range(len(cnts)): + * data[j] = cnts[j] # <<<<<<<<<<<<<< + * R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) + * Rs._R[0] = R + */ + __pyx_t_15 = __pyx_v_j; + __pyx_t_9 = -1; + if (__pyx_t_15 < 0) { + __pyx_t_15 += __pyx_pybuffernd_cnts.diminfo[0].shape; + if (unlikely(__pyx_t_15 < 0)) __pyx_t_9 = 0; + } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_cnts.diminfo[0].shape)) __pyx_t_9 = 0; + if (unlikely(__pyx_t_9 != -1)) { + __Pyx_RaiseBufferIndexError(__pyx_t_9); + __PYX_ERR(0, 274, __pyx_L1_error) + } + (__pyx_v_data[__pyx_v_j]) = ((uint)(*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_pybuffernd_cnts.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_cnts.diminfo[0].strides))); + } + + /* "pycocotools/_mask.pyx":275 + * for j in range(len(cnts)): + * data[j] = cnts[j] + * R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) # <<<<<<<<<<<<<< + * Rs._R[0] = R + * objs.append(_toString(Rs)[0]) + */ + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_ucRles, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = PyObject_GetItem(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_17 = __Pyx_PyInt_As_siz(__pyx_t_7); if (unlikely((__pyx_t_17 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_16.h = __pyx_t_17; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_ucRles, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = PyObject_GetItem(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_17 = __Pyx_PyInt_As_siz(__pyx_t_7); if (unlikely((__pyx_t_17 == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 275, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_16.w = __pyx_t_17; + __pyx_t_13 = PyObject_Length(((PyObject *)__pyx_v_cnts)); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 275, __pyx_L1_error) + __pyx_t_16.m = __pyx_t_13; + __pyx_t_16.cnts = ((uint *)__pyx_v_data); + __pyx_v_R = __pyx_t_16; + + /* "pycocotools/_mask.pyx":276 + * data[j] = cnts[j] + * R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) + * Rs._R[0] = R # <<<<<<<<<<<<<< + * objs.append(_toString(Rs)[0]) + * return objs + */ + (__pyx_v_Rs->_R[0]) = __pyx_v_R; + + /* "pycocotools/_mask.pyx":277 + * R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) + * Rs._R[0] = R + * objs.append(_toString(Rs)[0]) # <<<<<<<<<<<<<< + * return objs + * + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_toString); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (!__pyx_t_2) { + __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_Rs)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_7); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, ((PyObject *)__pyx_v_Rs)}; + __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_7); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(((PyObject *)__pyx_v_Rs)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_Rs)); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_Rs)); + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_objs, __pyx_t_5); if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 277, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + + /* "pycocotools/_mask.pyx":278 + * Rs._R[0] = R + * objs.append(_toString(Rs)[0]) + * return objs # <<<<<<<<<<<<<< + * + * def frPyObjects(pyobj, siz h, w): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":262 + * return objs + * + * def frUncompressedRLE(ucRles, siz h, siz w): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.uint32_t, ndim=1] cnts + * cdef RLE R + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cnts.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("pycocotools._mask.frUncompressedRLE", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cnts.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_cnts); + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XDECREF((PyObject *)__pyx_v_Rs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "pycocotools/_mask.pyx":280 + * return objs + * + * def frPyObjects(pyobj, siz h, w): # <<<<<<<<<<<<<< + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_11pycocotools_5_mask_23frPyObjects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_11pycocotools_5_mask_23frPyObjects = {"frPyObjects", (PyCFunction)__pyx_pw_11pycocotools_5_mask_23frPyObjects, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_11pycocotools_5_mask_23frPyObjects(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_pyobj = 0; + siz __pyx_v_h; + PyObject *__pyx_v_w = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("frPyObjects (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyobj,&__pyx_n_s_h,&__pyx_n_s_w,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pyobj)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frPyObjects", 1, 3, 3, 1); __PYX_ERR(0, 280, __pyx_L3_error) + } + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("frPyObjects", 1, 3, 3, 2); __PYX_ERR(0, 280, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "frPyObjects") < 0)) __PYX_ERR(0, 280, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_pyobj = values[0]; + __pyx_v_h = __Pyx_PyInt_As_siz(values[1]); if (unlikely((__pyx_v_h == ((siz)-1)) && PyErr_Occurred())) __PYX_ERR(0, 280, __pyx_L3_error) + __pyx_v_w = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("frPyObjects", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 280, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("pycocotools._mask.frPyObjects", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_11pycocotools_5_mask_22frPyObjects(__pyx_self, __pyx_v_pyobj, __pyx_v_h, __pyx_v_w); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_11pycocotools_5_mask_22frPyObjects(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyobj, siz __pyx_v_h, PyObject *__pyx_v_w) { + PyObject *__pyx_v_objs = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + __Pyx_RefNannySetupContext("frPyObjects", 0); + + /* "pycocotools/_mask.pyx":281 + * + * def frPyObjects(pyobj, siz h, w): + * if type(pyobj) == np.ndarray: # <<<<<<<<<<<<<< + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) == 4: + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_pyobj)), ((PyObject *)__pyx_ptype_5numpy_ndarray), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 281, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":282 + * def frPyObjects(pyobj, siz h, w): + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) # <<<<<<<<<<<<<< + * elif type(pyobj) == list and len(pyobj[0]) == 4: + * objs = frBbox(pyobj, h, w ) + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_frBbox); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_pyobj, __pyx_t_4, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_pyobj, __pyx_t_4, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_INCREF(__pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_v_pyobj); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); + __Pyx_INCREF(__pyx_v_w); + __Pyx_GIVEREF(__pyx_v_w); + PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_w); + __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_objs = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":281 + * + * def frPyObjects(pyobj, siz h, w): + * if type(pyobj) == np.ndarray: # <<<<<<<<<<<<<< + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) == 4: + */ + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":283 + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) == 4: # <<<<<<<<<<<<<< + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) > 4: + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_pyobj)), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 283, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 283, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + } else { + __pyx_t_2 = __pyx_t_8; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pyobj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 283, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_8 = ((__pyx_t_9 == 4) != 0); + __pyx_t_2 = __pyx_t_8; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":284 + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) == 4: + * objs = frBbox(pyobj, h, w ) # <<<<<<<<<<<<<< + * elif type(pyobj) == list and len(pyobj[0]) > 4: + * objs = frPoly(pyobj, h, w ) + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_frBbox); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyInt_From_siz(__pyx_v_h); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_4 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_pyobj, __pyx_t_7, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_pyobj, __pyx_t_7, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_4) { + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; + } + __Pyx_INCREF(__pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_v_pyobj); + PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_7); + __Pyx_INCREF(__pyx_v_w); + __Pyx_GIVEREF(__pyx_v_w); + PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_v_w); + __pyx_t_7 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_objs = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":283 + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) == 4: # <<<<<<<<<<<<<< + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) > 4: + */ + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":285 + * elif type(pyobj) == list and len(pyobj[0]) == 4: + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) > 4: # <<<<<<<<<<<<<< + * objs = frPoly(pyobj, h, w ) + * elif type(pyobj) == list and type(pyobj[0]) == dict: + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_pyobj)), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + } else { + __pyx_t_2 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pyobj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_8 = ((__pyx_t_9 > 4) != 0); + __pyx_t_2 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":286 + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) > 4: + * objs = frPoly(pyobj, h, w ) # <<<<<<<<<<<<<< + * elif type(pyobj) == list and type(pyobj[0]) == dict: + * objs = frUncompressedRLE(pyobj, h, w) + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_frPoly); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyInt_From_siz(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_pyobj, __pyx_t_5, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_pyobj, __pyx_t_5, __pyx_v_w}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_v_pyobj); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_5); + __Pyx_INCREF(__pyx_v_w); + __Pyx_GIVEREF(__pyx_v_w); + PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_v_w); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_objs = __pyx_t_1; + __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":285 + * elif type(pyobj) == list and len(pyobj[0]) == 4: + * objs = frBbox(pyobj, h, w ) + * elif type(pyobj) == list and len(pyobj[0]) > 4: # <<<<<<<<<<<<<< + * objs = frPoly(pyobj, h, w ) + * elif type(pyobj) == list and type(pyobj[0]) == dict: + */ + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":287 + * elif type(pyobj) == list and len(pyobj[0]) > 4: + * objs = frPoly(pyobj, h, w ) + * elif type(pyobj) == list and type(pyobj[0]) == dict: # <<<<<<<<<<<<<< + * objs = frUncompressedRLE(pyobj, h, w) + * else: + */ + __pyx_t_1 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_pyobj)), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 287, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_8) { + } else { + __pyx_t_2 = __pyx_t_8; + goto __pyx_L8_bool_binop_done; + } + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pyobj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_t_1)), ((PyObject *)(&PyDict_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 287, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = __pyx_t_8; + __pyx_L8_bool_binop_done:; + if (__pyx_t_2) { + + /* "pycocotools/_mask.pyx":288 + * objs = frPoly(pyobj, h, w ) + * elif type(pyobj) == list and type(pyobj[0]) == dict: + * objs = frUncompressedRLE(pyobj, h, w) # <<<<<<<<<<<<<< + * else: + * raise Exception('input type is not supported.') + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_frUncompressedRLE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyInt_From_siz(__pyx_v_h); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_pyobj, __pyx_t_4, __pyx_v_w}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_pyobj, __pyx_t_4, __pyx_v_w}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_INCREF(__pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_v_pyobj); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_pyobj); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); + __Pyx_INCREF(__pyx_v_w); + __Pyx_GIVEREF(__pyx_v_w); + PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_w); + __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_objs = __pyx_t_3; + __pyx_t_3 = 0; + + /* "pycocotools/_mask.pyx":287 + * elif type(pyobj) == list and len(pyobj[0]) > 4: + * objs = frPoly(pyobj, h, w ) + * elif type(pyobj) == list and type(pyobj[0]) == dict: # <<<<<<<<<<<<<< + * objs = frUncompressedRLE(pyobj, h, w) + * else: + */ + goto __pyx_L3; + } + + /* "pycocotools/_mask.pyx":290 + * objs = frUncompressedRLE(pyobj, h, w) + * else: + * raise Exception('input type is not supported.') # <<<<<<<<<<<<<< + * return objs + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(0, 290, __pyx_L1_error) + } + __pyx_L3:; + + /* "pycocotools/_mask.pyx":291 + * else: + * raise Exception('input type is not supported.') + * return objs # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_objs); + __pyx_r = __pyx_v_objs; + goto __pyx_L0; + + /* "pycocotools/_mask.pyx":280 + * return objs + * + * def frPyObjects(pyobj, siz h, w): # <<<<<<<<<<<<<< + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("pycocotools._mask.frPyObjects", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_objs); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fullfill the PEP. + */ + +/* Python wrapper */ +static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_v_copy_shape; + int __pyx_v_i; + int __pyx_v_ndim; + int __pyx_v_endian_detector; + int __pyx_v_little_endian; + int __pyx_v_t; + char *__pyx_v_f; + PyArray_Descr *__pyx_v_descr = 0; + int __pyx_v_offset; + int __pyx_v_hasfields; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + char *__pyx_t_7; + __Pyx_RefNannySetupContext("__getbuffer__", 0); + if (__pyx_v_info != NULL) { + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":203 + * # of flags + * + * if info == NULL: return # <<<<<<<<<<<<<< + * + * cdef int copy_shape, i, ndim + */ + __pyx_t_1 = ((__pyx_v_info == NULL) != 0); + if (__pyx_t_1) { + __pyx_r = 0; + goto __pyx_L0; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":206 + * + * cdef int copy_shape, i, ndim + * cdef int endian_detector = 1 # <<<<<<<<<<<<<< + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * + */ + __pyx_v_endian_detector = 1; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":207 + * cdef int copy_shape, i, ndim + * cdef int endian_detector = 1 + * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< + * + * ndim = PyArray_NDIM(self) + */ + __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":209 + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * + * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211 + * ndim = PyArray_NDIM(self) + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * copy_shape = 1 + * else: + */ + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":212 + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * copy_shape = 1 # <<<<<<<<<<<<<< + * else: + * copy_shape = 0 + */ + __pyx_v_copy_shape = 1; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":211 + * ndim = PyArray_NDIM(self) + * + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * copy_shape = 1 + * else: + */ + goto __pyx_L4; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":214 + * copy_shape = 1 + * else: + * copy_shape = 0 # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + */ + /*else*/ { + __pyx_v_copy_shape = 0; + } + __pyx_L4:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216 + * copy_shape = 0 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L6_bool_binop_done; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":217 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< + * raise ValueError(u"ndarray is not C contiguous") + * + */ + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L6_bool_binop_done:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216 + * copy_shape = 0 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218 + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 218, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":216 + * copy_shape = 0 + * + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L9_bool_binop_done; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":221 + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< + * raise ValueError(u"ndarray is not Fortran contiguous") + * + */ + __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L9_bool_binop_done:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222 + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< + * + * info.buf = PyArray_DATA(self) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 222, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":220 + * raise ValueError(u"ndarray is not C contiguous") + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":224 + * raise ValueError(u"ndarray is not Fortran contiguous") + * + * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< + * info.ndim = ndim + * if copy_shape: + */ + __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225 + * + * info.buf = PyArray_DATA(self) + * info.ndim = ndim # <<<<<<<<<<<<<< + * if copy_shape: + * # Allocate new buffer for strides and shape info. + */ + __pyx_v_info->ndim = __pyx_v_ndim; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226 + * info.buf = PyArray_DATA(self) + * info.ndim = ndim + * if copy_shape: # <<<<<<<<<<<<<< + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + */ + __pyx_t_1 = (__pyx_v_copy_shape != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229 + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< + * info.shape = info.strides + ndim + * for i in range(ndim): + */ + __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":230 + * # This is allocated as one block, strides first. + * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) + * info.shape = info.strides + ndim # <<<<<<<<<<<<<< + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] + */ + __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231 + * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) + * info.shape = info.strides + ndim + * for i in range(ndim): # <<<<<<<<<<<<<< + * info.strides[i] = PyArray_STRIDES(self)[i] + * info.shape[i] = PyArray_DIMS(self)[i] + */ + __pyx_t_4 = __pyx_v_ndim; + for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { + __pyx_v_i = __pyx_t_5; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232 + * info.shape = info.strides + ndim + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< + * info.shape[i] = PyArray_DIMS(self)[i] + * else: + */ + (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233 + * for i in range(ndim): + * info.strides[i] = PyArray_STRIDES(self)[i] + * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< + * else: + * info.strides = PyArray_STRIDES(self) + */ + (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":226 + * info.buf = PyArray_DATA(self) + * info.ndim = ndim + * if copy_shape: # <<<<<<<<<<<<<< + * # Allocate new buffer for strides and shape info. + * # This is allocated as one block, strides first. + */ + goto __pyx_L11; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235 + * info.shape[i] = PyArray_DIMS(self)[i] + * else: + * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL + */ + /*else*/ { + __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236 + * else: + * info.strides = PyArray_STRIDES(self) + * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) + */ + __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self)); + } + __pyx_L11:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237 + * info.strides = PyArray_STRIDES(self) + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL # <<<<<<<<<<<<<< + * info.itemsize = PyArray_ITEMSIZE(self) + * info.readonly = not PyArray_ISWRITEABLE(self) + */ + __pyx_v_info->suboffsets = NULL; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":238 + * info.shape = PyArray_DIMS(self) + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< + * info.readonly = not PyArray_ISWRITEABLE(self) + * + */ + __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":239 + * info.suboffsets = NULL + * info.itemsize = PyArray_ITEMSIZE(self) + * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< + * + * cdef int t + */ + __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242 + * + * cdef int t + * cdef char* f = NULL # <<<<<<<<<<<<<< + * cdef dtype descr = self.descr + * cdef int offset + */ + __pyx_v_f = NULL; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243 + * cdef int t + * cdef char* f = NULL + * cdef dtype descr = self.descr # <<<<<<<<<<<<<< + * cdef int offset + * + */ + __pyx_t_3 = ((PyObject *)__pyx_v_self->descr); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246 + * cdef int offset + * + * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< + * + * if not hasfields and not copy_shape: + */ + __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248 + * cdef bint hasfields = PyDataType_HASFIELDS(descr) + * + * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< + * # do not call releasebuffer + * info.obj = None + */ + __pyx_t_2 = ((!(__pyx_v_hasfields != 0)) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_2 = ((!(__pyx_v_copy_shape != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L15_bool_binop_done:; + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250 + * if not hasfields and not copy_shape: + * # do not call releasebuffer + * info.obj = None # <<<<<<<<<<<<<< + * else: + * # need to call releasebuffer + */ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = Py_None; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248 + * cdef bint hasfields = PyDataType_HASFIELDS(descr) + * + * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< + * # do not call releasebuffer + * info.obj = None + */ + goto __pyx_L14; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253 + * else: + * # need to call releasebuffer + * info.obj = self # <<<<<<<<<<<<<< + * + * if not hasfields: + */ + /*else*/ { + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + } + __pyx_L14:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255 + * info.obj = self + * + * if not hasfields: # <<<<<<<<<<<<<< + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + */ + __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":256 + * + * if not hasfields: + * t = descr.type_num # <<<<<<<<<<<<<< + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + */ + __pyx_t_4 = __pyx_v_descr->type_num; + __pyx_v_t = __pyx_t_4; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257 + * if not hasfields: + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0); + if (!__pyx_t_2) { + goto __pyx_L20_next_or; + } else { + } + __pyx_t_2 = (__pyx_v_little_endian != 0); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L19_bool_binop_done; + } + __pyx_L20_next_or:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":258 + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" + */ + __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L19_bool_binop_done; + } + __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L19_bool_binop_done:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257 + * if not hasfields: + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259 + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 259, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257 + * if not hasfields: + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260 + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" + */ + switch (__pyx_v_t) { + case NPY_BYTE: + __pyx_v_f = ((char *)"b"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261 + * raise ValueError(u"Non-native byte order not supported") + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" + */ + case NPY_UBYTE: + __pyx_v_f = ((char *)"B"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262 + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" + */ + case NPY_SHORT: + __pyx_v_f = ((char *)"h"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263 + * elif t == NPY_UBYTE: f = "B" + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" + */ + case NPY_USHORT: + __pyx_v_f = ((char *)"H"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264 + * elif t == NPY_SHORT: f = "h" + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" + */ + case NPY_INT: + __pyx_v_f = ((char *)"i"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265 + * elif t == NPY_USHORT: f = "H" + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" + */ + case NPY_UINT: + __pyx_v_f = ((char *)"I"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266 + * elif t == NPY_INT: f = "i" + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" + */ + case NPY_LONG: + __pyx_v_f = ((char *)"l"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267 + * elif t == NPY_UINT: f = "I" + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" + */ + case NPY_ULONG: + __pyx_v_f = ((char *)"L"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268 + * elif t == NPY_LONG: f = "l" + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" + */ + case NPY_LONGLONG: + __pyx_v_f = ((char *)"q"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269 + * elif t == NPY_ULONG: f = "L" + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" + */ + case NPY_ULONGLONG: + __pyx_v_f = ((char *)"Q"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270 + * elif t == NPY_LONGLONG: f = "q" + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" + */ + case NPY_FLOAT: + __pyx_v_f = ((char *)"f"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271 + * elif t == NPY_ULONGLONG: f = "Q" + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" + */ + case NPY_DOUBLE: + __pyx_v_f = ((char *)"d"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272 + * elif t == NPY_FLOAT: f = "f" + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" + */ + case NPY_LONGDOUBLE: + __pyx_v_f = ((char *)"g"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273 + * elif t == NPY_DOUBLE: f = "d" + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + */ + case NPY_CFLOAT: + __pyx_v_f = ((char *)"Zf"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274 + * elif t == NPY_LONGDOUBLE: f = "g" + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" + */ + case NPY_CDOUBLE: + __pyx_v_f = ((char *)"Zd"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275 + * elif t == NPY_CFLOAT: f = "Zf" + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< + * elif t == NPY_OBJECT: f = "O" + * else: + */ + case NPY_CLONGDOUBLE: + __pyx_v_f = ((char *)"Zg"); + break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276 + * elif t == NPY_CDOUBLE: f = "Zd" + * elif t == NPY_CLONGDOUBLE: f = "Zg" + * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + */ + case NPY_OBJECT: + __pyx_v_f = ((char *)"O"); + break; + default: + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278 + * elif t == NPY_OBJECT: f = "O" + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< + * info.format = f + * return + */ + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 278, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(1, 278, __pyx_L1_error) + break; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279 + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * info.format = f # <<<<<<<<<<<<<< + * return + * else: + */ + __pyx_v_info->format = __pyx_v_f; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280 + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * info.format = f + * return # <<<<<<<<<<<<<< + * else: + * info.format = stdlib.malloc(_buffer_format_string_len) + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":255 + * info.obj = self + * + * if not hasfields: # <<<<<<<<<<<<<< + * t = descr.type_num + * if ((descr.byteorder == c'>' and little_endian) or + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282 + * return + * else: + * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 + */ + /*else*/ { + __pyx_v_info->format = ((char *)malloc(0xFF)); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283 + * else: + * info.format = stdlib.malloc(_buffer_format_string_len) + * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< + * offset = 0 + * f = _util_dtypestring(descr, info.format + 1, + */ + (__pyx_v_info->format[0]) = '^'; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284 + * info.format = stdlib.malloc(_buffer_format_string_len) + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 # <<<<<<<<<<<<<< + * f = _util_dtypestring(descr, info.format + 1, + * info.format + _buffer_format_string_len, + */ + __pyx_v_offset = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":285 + * info.format[0] = c'^' # Native data types, manual alignment + * offset = 0 + * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< + * info.format + _buffer_format_string_len, + * &offset) + */ + __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) + __pyx_v_f = __pyx_t_7; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288 + * info.format + _buffer_format_string_len, + * &offset) + * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + */ + (__pyx_v_f[0]) = '\x00'; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":197 + * # experimental exception made for __getbuffer__ and __releasebuffer__ + * # -- the details of this may change. + * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< + * # This implementation of getbuffer is geared towards Cython + * # requirements, and does not yet fullfill the PEP. + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(Py_None); + __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL; + } + __pyx_L2:; + __Pyx_XDECREF((PyObject *)__pyx_v_descr); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + */ + +/* Python wrapper */ +static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/ +static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); + __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("__releasebuffer__", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291 + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292 + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) # <<<<<<<<<<<<<< + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * stdlib.free(info.strides) + */ + free(__pyx_v_info->format); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":291 + * + * def __releasebuffer__(ndarray self, Py_buffer* info): + * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293 + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * stdlib.free(info.strides) + * # info.shape was stored after info.strides in the same block + */ + __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294 + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): + * stdlib.free(info.strides) # <<<<<<<<<<<<<< + * # info.shape was stored after info.strides in the same block + * + */ + free(__pyx_v_info->strides); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":293 + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< + * stdlib.free(info.strides) + * # info.shape was stored after info.strides in the same block + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":290 + * f[0] = c'\0' # Terminate format string + * + * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< + * if PyArray_HASFIELDS(self): + * stdlib.free(info.format) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771 + * + * cdef inline object PyArray_MultiIterNew1(a): + * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew2(a, b): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":774 + * + * cdef inline object PyArray_MultiIterNew2(a, b): + * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 774, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":777 + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":780 + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":783 + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< + * # Recursive utility function used in __getbuffer__ to get format + * # string. The new location in the format string is returned. + */ + +static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) { + PyArray_Descr *__pyx_v_child = 0; + int __pyx_v_endian_detector; + int __pyx_v_little_endian; + PyObject *__pyx_v_fields = 0; + PyObject *__pyx_v_childname = NULL; + PyObject *__pyx_v_new_offset = NULL; + PyObject *__pyx_v_t = NULL; + char *__pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + long __pyx_t_8; + char *__pyx_t_9; + __Pyx_RefNannySetupContext("_util_dtypestring", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790 + * + * cdef dtype child + * cdef int endian_detector = 1 # <<<<<<<<<<<<<< + * cdef bint little_endian = ((&endian_detector)[0] != 0) + * cdef tuple fields + */ + __pyx_v_endian_detector = 1; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791 + * cdef dtype child + * cdef int endian_detector = 1 + * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< + * cdef tuple fields + * + */ + __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794 + * cdef tuple fields + * + * for childname in descr.names: # <<<<<<<<<<<<<< + * fields = descr.fields[childname] + * child, new_offset = fields + */ + if (unlikely(__pyx_v_descr->names == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(1, 794, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; + for (;;) { + if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 794, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 794, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); + __pyx_t_3 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":795 + * + * for childname in descr.names: + * fields = descr.fields[childname] # <<<<<<<<<<<<<< + * child, new_offset = fields + * + */ + if (unlikely(__pyx_v_descr->fields == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 795, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 795, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 795, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796 + * for childname in descr.names: + * fields = descr.fields[childname] + * child, new_offset = fields # <<<<<<<<<<<<<< + * + * if (end - f) - (new_offset - offset[0]) < 15: + */ + if (likely(__pyx_v_fields != Py_None)) { + PyObject* sequence = __pyx_v_fields; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(1, 796, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 796, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 796, __pyx_L1_error) + } + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 796, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3)); + __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); + __pyx_t_4 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798 + * child, new_offset = fields + * + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + */ + __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 798, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); + if (__pyx_t_6) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799 + * + * if (end - f) - (new_offset - offset[0]) < 15: + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< + * + * if ((child.byteorder == c'>' and little_endian) or + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 799, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":798 + * child, new_offset = fields + * + * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0); + if (!__pyx_t_7) { + goto __pyx_L8_next_or; + } else { + } + __pyx_t_7 = (__pyx_v_little_endian != 0); + if (!__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_L8_next_or:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802 + * + * if ((child.byteorder == c'>' and little_endian) or + * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< + * raise ValueError(u"Non-native byte order not supported") + * # One could encode it in the format string and have Cython + */ + __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0); + if (__pyx_t_7) { + } else { + __pyx_t_6 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0); + __pyx_t_6 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + if (__pyx_t_6) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803 + * if ((child.byteorder == c'>' and little_endian) or + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * # One could encode it in the format string and have Cython + * # complain instead, BUT: < and > in format strings also imply + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 803, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801 + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") + * + * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813 + * + * # Output padding bytes + * while offset[0] < new_offset: # <<<<<<<<<<<<<< + * f[0] = 120 # "x"; pad byte + * f += 1 + */ + while (1) { + __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 813, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (!__pyx_t_6) break; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814 + * # Output padding bytes + * while offset[0] < new_offset: + * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< + * f += 1 + * offset[0] += 1 + */ + (__pyx_v_f[0]) = 0x78; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":815 + * while offset[0] < new_offset: + * f[0] = 120 # "x"; pad byte + * f += 1 # <<<<<<<<<<<<<< + * offset[0] += 1 + * + */ + __pyx_v_f = (__pyx_v_f + 1); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":816 + * f[0] = 120 # "x"; pad byte + * f += 1 + * offset[0] += 1 # <<<<<<<<<<<<<< + * + * offset[0] += child.itemsize + */ + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":818 + * offset[0] += 1 + * + * offset[0] += child.itemsize # <<<<<<<<<<<<<< + * + * if not PyDataType_HASFIELDS(child): + */ + __pyx_t_8 = 0; + (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820 + * offset[0] += child.itemsize + * + * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< + * t = child.type_num + * if end - f < 5: + */ + __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); + if (__pyx_t_6) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":821 + * + * if not PyDataType_HASFIELDS(child): + * t = child.type_num # <<<<<<<<<<<<<< + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") + */ + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 821, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); + __pyx_t_4 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822 + * if not PyDataType_HASFIELDS(child): + * t = child.type_num + * if end - f < 5: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short.") + * + */ + __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); + if (__pyx_t_6) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823 + * t = child.type_num + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< + * + * # Until ticket #99 is fixed, use integers to avoid warnings + */ + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(1, 823, __pyx_L1_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":822 + * if not PyDataType_HASFIELDS(child): + * t = child.type_num + * if end - f < 5: # <<<<<<<<<<<<<< + * raise RuntimeError(u"Format string allocated too short.") + * + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826 + * + * # Until ticket #99 is fixed, use integers to avoid warnings + * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 826, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 98; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827 + * # Until ticket #99 is fixed, use integers to avoid warnings + * if t == NPY_BYTE: f[0] = 98 #"b" + * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 66; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":828 + * if t == NPY_BYTE: f[0] = 98 #"b" + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 828, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x68; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829 + * elif t == NPY_UBYTE: f[0] = 66 #"B" + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 829, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 72; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":830 + * elif t == NPY_SHORT: f[0] = 104 #"h" + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 830, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x69; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831 + * elif t == NPY_USHORT: f[0] = 72 #"H" + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 831, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 73; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832 + * elif t == NPY_INT: f[0] = 105 #"i" + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 832, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x6C; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833 + * elif t == NPY_UINT: f[0] = 73 #"I" + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 833, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 76; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834 + * elif t == NPY_LONG: f[0] = 108 #"l" + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 834, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x71; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":835 + * elif t == NPY_ULONG: f[0] = 76 #"L" + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 835, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 81; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":836 + * elif t == NPY_LONGLONG: f[0] = 113 #"q" + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 836, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x66; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837 + * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x64; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838 + * elif t == NPY_FLOAT: f[0] = 102 #"f" + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 0x67; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839 + * elif t == NPY_DOUBLE: f[0] = 100 #"d" + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x66; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840 + * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + * elif t == NPY_OBJECT: f[0] = 79 #"O" + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x64; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841 + * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< + * elif t == NPY_OBJECT: f[0] = 79 #"O" + * else: + */ + __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 90; + (__pyx_v_f[1]) = 0x67; + __pyx_v_f = (__pyx_v_f + 1); + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842 + * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd + * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg + * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + */ + __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_6) { + (__pyx_v_f[0]) = 79; + goto __pyx_L15; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844 + * elif t == NPY_OBJECT: f[0] = 79 #"O" + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< + * f += 1 + * else: + */ + /*else*/ { + __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 844, __pyx_L1_error) + } + __pyx_L15:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845 + * else: + * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) + * f += 1 # <<<<<<<<<<<<<< + * else: + * # Cython ignores struct boundary information ("T{...}"), + */ + __pyx_v_f = (__pyx_v_f + 1); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":820 + * offset[0] += child.itemsize + * + * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< + * t = child.type_num + * if end - f < 5: + */ + goto __pyx_L13; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849 + * # Cython ignores struct boundary information ("T{...}"), + * # so don't output it + * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< + * return f + * + */ + /*else*/ { + __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == NULL)) __PYX_ERR(1, 849, __pyx_L1_error) + __pyx_v_f = __pyx_t_9; + } + __pyx_L13:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794 + * cdef tuple fields + * + * for childname in descr.names: # <<<<<<<<<<<<<< + * fields = descr.fields[childname] + * child, new_offset = fields + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850 + * # so don't output it + * f = _util_dtypestring(child, f, end, offset) + * return f # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_f; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< + * # Recursive utility function used in __getbuffer__ to get format + * # string. The new location in the format string is returned. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_child); + __Pyx_XDECREF(__pyx_v_fields); + __Pyx_XDECREF(__pyx_v_childname); + __Pyx_XDECREF(__pyx_v_new_offset); + __Pyx_XDECREF(__pyx_v_t); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966 + * + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * cdef PyObject* baseptr + * if base is None: + */ + +static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { + PyObject *__pyx_v_baseptr; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + __Pyx_RefNannySetupContext("set_array_base", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968 + * cdef inline void set_array_base(ndarray arr, object base): + * cdef PyObject* baseptr + * if base is None: # <<<<<<<<<<<<<< + * baseptr = NULL + * else: + */ + __pyx_t_1 = (__pyx_v_base == Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":969 + * cdef PyObject* baseptr + * if base is None: + * baseptr = NULL # <<<<<<<<<<<<<< + * else: + * Py_INCREF(base) # important to do this before decref below! + */ + __pyx_v_baseptr = NULL; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":968 + * cdef inline void set_array_base(ndarray arr, object base): + * cdef PyObject* baseptr + * if base is None: # <<<<<<<<<<<<<< + * baseptr = NULL + * else: + */ + goto __pyx_L3; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":971 + * baseptr = NULL + * else: + * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< + * baseptr = base + * Py_XDECREF(arr.base) + */ + /*else*/ { + Py_INCREF(__pyx_v_base); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":972 + * else: + * Py_INCREF(base) # important to do this before decref below! + * baseptr = base # <<<<<<<<<<<<<< + * Py_XDECREF(arr.base) + * arr.base = baseptr + */ + __pyx_v_baseptr = ((PyObject *)__pyx_v_base); + } + __pyx_L3:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":973 + * Py_INCREF(base) # important to do this before decref below! + * baseptr = base + * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< + * arr.base = baseptr + * + */ + Py_XDECREF(__pyx_v_arr->base); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":974 + * baseptr = base + * Py_XDECREF(arr.base) + * arr.base = baseptr # <<<<<<<<<<<<<< + * + * cdef inline object get_array_base(ndarray arr): + */ + __pyx_v_arr->base = __pyx_v_baseptr; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":966 + * + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * cdef PyObject* baseptr + * if base is None: + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976 + * arr.base = baseptr + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * if arr.base is NULL: + * return None + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("get_array_base", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977 + * + * cdef inline object get_array_base(ndarray arr): + * if arr.base is NULL: # <<<<<<<<<<<<<< + * return None + * else: + */ + __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); + if (__pyx_t_1) { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":978 + * cdef inline object get_array_base(ndarray arr): + * if arr.base is NULL: + * return None # <<<<<<<<<<<<<< + * else: + * return arr.base + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_None); + __pyx_r = Py_None; + goto __pyx_L0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977 + * + * cdef inline object get_array_base(ndarray arr): + * if arr.base is NULL: # <<<<<<<<<<<<<< + * return None + * else: + */ + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980 + * return None + * else: + * return arr.base # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_arr->base)); + __pyx_r = ((PyObject *)__pyx_v_arr->base); + goto __pyx_L0; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":976 + * arr.base = baseptr + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * if arr.base is NULL: + * return None + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * _import_array() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_array", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":986 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987 + * cdef inline int import_array() except -1: + * try: + * _import_array() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") + */ + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 987, __pyx_L3_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":986 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_try_end; + __pyx_L3_error:; + __Pyx_PyThreadState_assign + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988 + * try: + * _import_array() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.multiarray failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 988, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989 + * _import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 989, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 989, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":986 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * _import_array() + * except Exception: + */ + __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L10_try_end:; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * _import_array() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_umath", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":992 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":993 + * cdef inline int import_umath() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 993, __pyx_L3_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":992 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_try_end; + __pyx_L3_error:; + __Pyx_PyThreadState_assign + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":994 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 994, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":995 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 995, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 995, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":992 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L10_try_end:; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + __Pyx_RefNannySetupContext("import_ufunc", 0); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999 + * cdef inline int import_ufunc() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 999, __pyx_L3_error) + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L10_try_end; + __pyx_L3_error:; + __Pyx_PyThreadState_assign + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1000, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1001, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 1001, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L10_try_end:; + } + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_tp_new_11pycocotools_5_mask_RLEs(PyTypeObject *t, PyObject *a, PyObject *k) { + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + if (unlikely(__pyx_pw_11pycocotools_5_mask_4RLEs_1__cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_11pycocotools_5_mask_RLEs(PyObject *o) { + #if PY_VERSION_HEX >= 0x030400a1 + if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + ++Py_REFCNT(o); + __pyx_pw_11pycocotools_5_mask_4RLEs_3__dealloc__(o); + --Py_REFCNT(o); + PyErr_Restore(etype, eval, etb); + } + (*Py_TYPE(o)->tp_free)(o); +} + +static PyObject *__pyx_tp_getattro_11pycocotools_5_mask_RLEs(PyObject *o, PyObject *n) { + PyObject *v = PyObject_GenericGetAttr(o, n); + if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + v = __pyx_pw_11pycocotools_5_mask_4RLEs_5__getattr__(o, n); + } + return v; +} + +static PyMethodDef __pyx_methods_11pycocotools_5_mask_RLEs[] = { + {"__getattr__", (PyCFunction)__pyx_pw_11pycocotools_5_mask_4RLEs_5__getattr__, METH_O|METH_COEXIST, 0}, + {0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_11pycocotools_5_mask_RLEs = { + PyVarObject_HEAD_INIT(0, 0) + "pycocotools._mask.RLEs", /*tp_name*/ + sizeof(struct __pyx_obj_11pycocotools_5_mask_RLEs), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_11pycocotools_5_mask_RLEs, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + __pyx_tp_getattro_11pycocotools_5_mask_RLEs, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_11pycocotools_5_mask_RLEs, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_11pycocotools_5_mask_RLEs, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +}; + +static PyObject *__pyx_tp_new_11pycocotools_5_mask_Masks(PyTypeObject *t, PyObject *a, PyObject *k) { + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + if (unlikely(__pyx_pw_11pycocotools_5_mask_5Masks_1__cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_11pycocotools_5_mask_Masks(PyObject *o) { + #if PY_VERSION_HEX >= 0x030400a1 + if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + (*Py_TYPE(o)->tp_free)(o); +} + +static PyMethodDef __pyx_methods_11pycocotools_5_mask_Masks[] = { + {"__array__", (PyCFunction)__pyx_pw_11pycocotools_5_mask_5Masks_3__array__, METH_NOARGS, 0}, + {0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_11pycocotools_5_mask_Masks = { + PyVarObject_HEAD_INIT(0, 0) + "pycocotools._mask.Masks", /*tp_name*/ + sizeof(struct __pyx_obj_11pycocotools_5_mask_Masks), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_11pycocotools_5_mask_Masks, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_11pycocotools_5_mask_Masks, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_11pycocotools_5_mask_Masks, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +}; + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef __pyx_moduledef = { + #if PY_VERSION_HEX < 0x03020000 + { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, + #else + PyModuleDef_HEAD_INIT, + #endif + "_mask", + 0, /* m_doc */ + -1, /* m_size */ + __pyx_methods /* m_methods */, + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, + {&__pyx_n_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 1}, + {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0}, + {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0}, + {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, + {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1}, + {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, + {&__pyx_n_s_R, __pyx_k_R, sizeof(__pyx_k_R), 0, 0, 1, 1}, + {&__pyx_n_s_Rs, __pyx_k_Rs, sizeof(__pyx_k_Rs), 0, 0, 1, 1}, + {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1}, + {&__pyx_kp_s_The_dt_and_gt_should_have_the_sa, __pyx_k_The_dt_and_gt_should_have_the_sa, sizeof(__pyx_k_The_dt_and_gt_should_have_the_sa), 0, 0, 1, 0}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1}, + {&__pyx_n_s_a_2, __pyx_k_a_2, sizeof(__pyx_k_a_2), 0, 0, 1, 1}, + {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1}, + {&__pyx_n_s_area, __pyx_k_area, sizeof(__pyx_k_area), 0, 0, 1, 1}, + {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, + {&__pyx_n_s_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 0, 0, 1, 1}, + {&__pyx_n_s_author, __pyx_k_author, sizeof(__pyx_k_author), 0, 0, 1, 1}, + {&__pyx_n_s_bb, __pyx_k_bb, sizeof(__pyx_k_bb), 0, 0, 1, 1}, + {&__pyx_n_s_bbIou, __pyx_k_bbIou, sizeof(__pyx_k_bbIou), 0, 0, 1, 1}, + {&__pyx_n_s_bb_2, __pyx_k_bb_2, sizeof(__pyx_k_bb_2), 0, 0, 1, 1}, + {&__pyx_n_s_c_string, __pyx_k_c_string, sizeof(__pyx_k_c_string), 0, 0, 1, 1}, + {&__pyx_n_s_cnts, __pyx_k_cnts, sizeof(__pyx_k_cnts), 0, 0, 1, 1}, + {&__pyx_n_s_counts, __pyx_k_counts, sizeof(__pyx_k_counts), 0, 0, 1, 1}, + {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, + {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1}, + {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1}, + {&__pyx_n_s_dt, __pyx_k_dt, sizeof(__pyx_k_dt), 0, 0, 1, 1}, + {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, + {&__pyx_n_s_frBbox, __pyx_k_frBbox, sizeof(__pyx_k_frBbox), 0, 0, 1, 1}, + {&__pyx_n_s_frPoly, __pyx_k_frPoly, sizeof(__pyx_k_frPoly), 0, 0, 1, 1}, + {&__pyx_n_s_frPyObjects, __pyx_k_frPyObjects, sizeof(__pyx_k_frPyObjects), 0, 0, 1, 1}, + {&__pyx_n_s_frString, __pyx_k_frString, sizeof(__pyx_k_frString), 0, 0, 1, 1}, + {&__pyx_n_s_frUncompressedRLE, __pyx_k_frUncompressedRLE, sizeof(__pyx_k_frUncompressedRLE), 0, 0, 1, 1}, + {&__pyx_n_s_gt, __pyx_k_gt, sizeof(__pyx_k_gt), 0, 0, 1, 1}, + {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, + {&__pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_k_home_ftian_code_py_faster_rcnn, sizeof(__pyx_k_home_ftian_code_py_faster_rcnn), 0, 0, 1, 0}, + {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_kp_s_input_data_type_not_allowed, __pyx_k_input_data_type_not_allowed, sizeof(__pyx_k_input_data_type_not_allowed), 0, 0, 1, 0}, + {&__pyx_kp_s_input_type_is_not_supported, __pyx_k_input_type_is_not_supported, sizeof(__pyx_k_input_type_is_not_supported), 0, 0, 1, 0}, + {&__pyx_n_s_intersect, __pyx_k_intersect, sizeof(__pyx_k_intersect), 0, 0, 1, 1}, + {&__pyx_n_s_iou, __pyx_k_iou, sizeof(__pyx_k_iou), 0, 0, 1, 1}, + {&__pyx_n_s_iouFun, __pyx_k_iouFun, sizeof(__pyx_k_iouFun), 0, 0, 1, 1}, + {&__pyx_n_s_iou_2, __pyx_k_iou_2, sizeof(__pyx_k_iou_2), 0, 0, 1, 1}, + {&__pyx_n_s_iou_locals__bbIou, __pyx_k_iou_locals__bbIou, sizeof(__pyx_k_iou_locals__bbIou), 0, 0, 1, 1}, + {&__pyx_n_s_iou_locals__len, __pyx_k_iou_locals__len, sizeof(__pyx_k_iou_locals__len), 0, 0, 1, 1}, + {&__pyx_n_s_iou_locals__preproc, __pyx_k_iou_locals__preproc, sizeof(__pyx_k_iou_locals__preproc), 0, 0, 1, 1}, + {&__pyx_n_s_iou_locals__rleIou, __pyx_k_iou_locals__rleIou, sizeof(__pyx_k_iou_locals__rleIou), 0, 0, 1, 1}, + {&__pyx_n_s_isbox, __pyx_k_isbox, sizeof(__pyx_k_isbox), 0, 0, 1, 1}, + {&__pyx_n_s_iscrowd, __pyx_k_iscrowd, sizeof(__pyx_k_iscrowd), 0, 0, 1, 1}, + {&__pyx_n_s_isrle, __pyx_k_isrle, sizeof(__pyx_k_isrle), 0, 0, 1, 1}, + {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1}, + {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1}, + {&__pyx_kp_s_list_input_can_be_bounding_box_N, __pyx_k_list_input_can_be_bounding_box_N, sizeof(__pyx_k_list_input_can_be_bounding_box_N), 0, 0, 1, 0}, + {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 0, 0, 1, 1}, + {&__pyx_n_s_masks, __pyx_k_masks, sizeof(__pyx_k_masks), 0, 0, 1, 1}, + {&__pyx_n_s_merge, __pyx_k_merge, sizeof(__pyx_k_merge), 0, 0, 1, 1}, + {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1}, + {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0}, + {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0}, + {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, + {&__pyx_n_s_np_poly, __pyx_k_np_poly, sizeof(__pyx_k_np_poly), 0, 0, 1, 1}, + {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, + {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0}, + {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0}, + {&__pyx_kp_s_numpy_ndarray_input_is_only_for, __pyx_k_numpy_ndarray_input_is_only_for, sizeof(__pyx_k_numpy_ndarray_input_is_only_for), 0, 0, 1, 0}, + {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, + {&__pyx_n_s_objs, __pyx_k_objs, sizeof(__pyx_k_objs), 0, 0, 1, 1}, + {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, + {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1}, + {&__pyx_n_s_poly, __pyx_k_poly, sizeof(__pyx_k_poly), 0, 0, 1, 1}, + {&__pyx_n_s_preproc, __pyx_k_preproc, sizeof(__pyx_k_preproc), 0, 0, 1, 1}, + {&__pyx_n_s_py_string, __pyx_k_py_string, sizeof(__pyx_k_py_string), 0, 0, 1, 1}, + {&__pyx_n_s_pycocotools__mask, __pyx_k_pycocotools__mask, sizeof(__pyx_k_pycocotools__mask), 0, 0, 1, 1}, + {&__pyx_n_s_pyiscrowd, __pyx_k_pyiscrowd, sizeof(__pyx_k_pyiscrowd), 0, 0, 1, 1}, + {&__pyx_n_s_pyobj, __pyx_k_pyobj, sizeof(__pyx_k_pyobj), 0, 0, 1, 1}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1}, + {&__pyx_n_s_rleIou, __pyx_k_rleIou, sizeof(__pyx_k_rleIou), 0, 0, 1, 1}, + {&__pyx_n_s_rleObjs, __pyx_k_rleObjs, sizeof(__pyx_k_rleObjs), 0, 0, 1, 1}, + {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, + {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_toBbox, __pyx_k_toBbox, sizeof(__pyx_k_toBbox), 0, 0, 1, 1}, + {&__pyx_n_s_toString, __pyx_k_toString, sizeof(__pyx_k_toString), 0, 0, 1, 1}, + {&__pyx_n_s_tsungyi, __pyx_k_tsungyi, sizeof(__pyx_k_tsungyi), 0, 0, 1, 1}, + {&__pyx_n_s_ucRles, __pyx_k_ucRles, sizeof(__pyx_k_ucRles), 0, 0, 1, 1}, + {&__pyx_n_s_uint32, __pyx_k_uint32, sizeof(__pyx_k_uint32), 0, 0, 1, 1}, + {&__pyx_n_s_uint8, __pyx_k_uint8, sizeof(__pyx_k_uint8), 0, 0, 1, 1}, + {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0}, + {&__pyx_kp_s_unrecognized_type_The_following, __pyx_k_unrecognized_type_The_following, sizeof(__pyx_k_unrecognized_type_The_following), 0, 0, 1, 0}, + {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, + {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 64, __pyx_L1_error) + __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 218, __pyx_L1_error) + __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 799, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 989, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "pycocotools/_mask.pyx":146 + * def merge(rleObjs, bint intersect=0): + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) # <<<<<<<<<<<<<< + * rleMerge(Rs._R, R._R, Rs._n, intersect) + * obj = _toString(R)[0] + */ + __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + + /* "pycocotools/_mask.pyx":172 + * # check if it's Nx4 bbox + * if not len(objs.shape) == 2 or not objs.shape[1] == 4: + * raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') # <<<<<<<<<<<<<< + * objs = objs.astype(np.double) + * elif type(objs) == list: + */ + __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_numpy_ndarray_input_is_only_for); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__2); + __Pyx_GIVEREF(__pyx_tuple__2); + + /* "pycocotools/_mask.pyx":185 + * objs = _frString(objs) + * else: + * raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') # <<<<<<<<<<<<<< + * else: + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + */ + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_list_input_can_be_bounding_box_N); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "pycocotools/_mask.pyx":187 + * raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') + * else: + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') # <<<<<<<<<<<<<< + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_unrecognized_type_The_following); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "pycocotools/_mask.pyx":164 + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): + * def _preproc(objs): # <<<<<<<<<<<<<< + * if len(objs) == 0: + * return objs + */ + __pyx_tuple__5 = PyTuple_Pack(4, __pyx_n_s_objs, __pyx_n_s_isbox, __pyx_n_s_isrle, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_preproc, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 164, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":189 + * raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + * return objs + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + */ + __pyx_tuple__7 = PyTuple_Pack(6, __pyx_n_s_dt, __pyx_n_s_gt, __pyx_n_s_iscrowd, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_iou); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_rleIou, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 189, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":191 + * def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): # <<<<<<<<<<<<<< + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): + */ + __pyx_tuple__9 = PyTuple_Pack(6, __pyx_n_s_dt, __pyx_n_s_gt, __pyx_n_s_iscrowd, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_iou); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_bbIou, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 191, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":193 + * def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + * bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + * def _len(obj): # <<<<<<<<<<<<<< + * cdef siz N = 0 + * if type(obj) == RLEs: + */ + __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_obj, __pyx_n_s_N); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_len, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 193, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":213 + * return [] + * if not type(dt) == type(gt): + * raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') # <<<<<<<<<<<<<< + * + * # define local variables + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_The_dt_and_gt_should_have_the_sa); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + + /* "pycocotools/_mask.pyx":224 + * _iouFun = _bbIou + * else: + * raise Exception('input data type not allowed.') # <<<<<<<<<<<<<< + * _iou = malloc(m*n* sizeof(double)) + * iou = np.zeros((m*n, ), dtype=np.double) + */ + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_input_data_type_not_allowed); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + + /* "pycocotools/_mask.pyx":269 + * objs = [] + * for i in range(n): + * Rs = RLEs(1) # <<<<<<<<<<<<<< + * cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) + * # time for malloc can be saved here but it's fine + */ + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + + /* "pycocotools/_mask.pyx":290 + * objs = frUncompressedRLE(pyobj, h, w) + * else: + * raise Exception('input type is not supported.') # <<<<<<<<<<<<<< + * return objs + */ + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_input_type_is_not_supported); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":218 + * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): + * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< + * + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + */ + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222 + * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) + * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): + * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< + * + * info.buf = PyArray_DATA(self) + */ + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259 + * if ((descr.byteorder == c'>' and little_endian) or + * (descr.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * if t == NPY_BYTE: f = "b" + * elif t == NPY_UBYTE: f = "B" + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":799 + * + * if (end - f) - (new_offset - offset[0]) < 15: + * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< + * + * if ((child.byteorder == c'>' and little_endian) or + */ + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":803 + * if ((child.byteorder == c'>' and little_endian) or + * (child.byteorder == c'<' and not little_endian)): + * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< + * # One could encode it in the format string and have Cython + * # complain instead, BUT: < and > in format strings also imply + */ + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":823 + * t = child.type_num + * if end - f < 5: + * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< + * + * # Until ticket #99 is fixed, use integers to avoid warnings + */ + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989 + * _import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":995 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + */ + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 1001, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + + /* "pycocotools/_mask.pyx":100 + * + * # internal conversion from Python RLEs object to compressed RLE format + * def _toString(RLEs Rs): # <<<<<<<<<<<<<< + * cdef siz n = Rs.n + * cdef bytes py_string + */ + __pyx_tuple__26 = PyTuple_Pack(6, __pyx_n_s_Rs, __pyx_n_s_n, __pyx_n_s_py_string, __pyx_n_s_c_string, __pyx_n_s_objs, __pyx_n_s_i); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_toString, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 100, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":116 + * + * # internal conversion from compressed RLE format to Python RLEs object + * def _frString(rleObjs): # <<<<<<<<<<<<<< + * cdef siz n = len(rleObjs) + * Rs = RLEs(n) + */ + __pyx_tuple__28 = PyTuple_Pack(7, __pyx_n_s_rleObjs, __pyx_n_s_n, __pyx_n_s_Rs, __pyx_n_s_py_string, __pyx_n_s_c_string, __pyx_n_s_i, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_frString, 116, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 116, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":129 + * # encode mask to RLEs objects + * # list of RLE string can be generated by RLEs member function + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): # <<<<<<<<<<<<<< + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) + */ + __pyx_tuple__30 = PyTuple_Pack(6, __pyx_n_s_mask, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_n, __pyx_n_s_Rs, __pyx_n_s_objs); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_encode, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 129, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":137 + * + * # decode mask from compressed list of RLE string or RLEs object + * def decode(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + */ + __pyx_tuple__32 = PyTuple_Pack(6, __pyx_n_s_rleObjs, __pyx_n_s_Rs, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_n, __pyx_n_s_masks); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_decode, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":144 + * return np.array(masks) + * + * def merge(rleObjs, bint intersect=0): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) + */ + __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_rleObjs, __pyx_n_s_intersect, __pyx_n_s_Rs, __pyx_n_s_R, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__34); + __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_merge, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 144, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":151 + * return obj + * + * def area(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + */ + __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_rleObjs, __pyx_n_s_Rs, __pyx_n_s_a, __pyx_n_s_shape, __pyx_n_s_a_2); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__36); + __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_area, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 151, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":163 + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): # <<<<<<<<<<<<<< + * def _preproc(objs): + * if len(objs) == 0: + */ + __pyx_tuple__38 = PyTuple_Pack(18, __pyx_n_s_dt, __pyx_n_s_gt, __pyx_n_s_pyiscrowd, __pyx_n_s_preproc, __pyx_n_s_preproc, __pyx_n_s_rleIou, __pyx_n_s_rleIou, __pyx_n_s_bbIou, __pyx_n_s_bbIou, __pyx_n_s_len, __pyx_n_s_len, __pyx_n_s_iscrowd, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_iou, __pyx_n_s_shape, __pyx_n_s_iouFun, __pyx_n_s_iou_2); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__38); + __Pyx_GIVEREF(__pyx_tuple__38); + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(3, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_iou_2, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 163, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":233 + * return iou.reshape((m,n), order='F') + * + * def toBbox( rleObjs ): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n + */ + __pyx_tuple__40 = PyTuple_Pack(6, __pyx_n_s_rleObjs, __pyx_n_s_Rs, __pyx_n_s_n, __pyx_n_s_bb_2, __pyx_n_s_shape, __pyx_n_s_bb); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__40); + __Pyx_GIVEREF(__pyx_tuple__40); + __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_toBbox, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 233, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":245 + * return bb + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) + */ + __pyx_tuple__42 = PyTuple_Pack(6, __pyx_n_s_bb, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_n, __pyx_n_s_Rs, __pyx_n_s_objs); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__42); + __Pyx_GIVEREF(__pyx_tuple__42); + __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_frBbox, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 245, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":252 + * return objs + * + * def frPoly( poly, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) + */ + __pyx_tuple__44 = PyTuple_Pack(9, __pyx_n_s_poly, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_np_poly, __pyx_n_s_n, __pyx_n_s_Rs, __pyx_n_s_i, __pyx_n_s_p, __pyx_n_s_objs); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__44); + __Pyx_GIVEREF(__pyx_tuple__44); + __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_frPoly, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 252, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":262 + * return objs + * + * def frUncompressedRLE(ucRles, siz h, siz w): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.uint32_t, ndim=1] cnts + * cdef RLE R + */ + __pyx_tuple__46 = PyTuple_Pack(11, __pyx_n_s_ucRles, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_cnts, __pyx_n_s_R, __pyx_n_s_data, __pyx_n_s_n, __pyx_n_s_objs, __pyx_n_s_i, __pyx_n_s_Rs, __pyx_n_s_j); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__46); + __Pyx_GIVEREF(__pyx_tuple__46); + __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_frUncompressedRLE, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 262, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":280 + * return objs + * + * def frPyObjects(pyobj, siz h, w): # <<<<<<<<<<<<<< + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + */ + __pyx_tuple__48 = PyTuple_Pack(4, __pyx_n_s_pyobj, __pyx_n_s_h, __pyx_n_s_w, __pyx_n_s_objs); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__48); + __Pyx_GIVEREF(__pyx_tuple__48); + __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_ftian_code_py_faster_rcnn, __pyx_n_s_frPyObjects, 280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +#if PY_MAJOR_VERSION < 3 +PyMODINIT_FUNC init_mask(void); /*proto*/ +PyMODINIT_FUNC init_mask(void) +#else +PyMODINIT_FUNC PyInit__mask(void); /*proto*/ +PyMODINIT_FUNC PyInit__mask(void) +#endif +{ + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + __Pyx_RefNannyDeclarations + #if CYTHON_REFNANNY + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__mask(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + #ifdef WITH_THREAD /* Python build with threading support? */ + PyEval_InitThreads(); + #endif + #endif + /*--- Module creation code ---*/ + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("_mask", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_COMPILING_IN_PYPY + Py_INCREF(__pyx_b); + #endif + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_pycocotools___mask) { + if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "pycocotools._mask")) { + if (unlikely(PyDict_SetItemString(modules, "pycocotools._mask", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global init code ---*/ + /*--- Variable export code ---*/ + /*--- Function export code ---*/ + /*--- Type init code ---*/ + if (PyType_Ready(&__pyx_type_11pycocotools_5_mask_RLEs) < 0) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_type_11pycocotools_5_mask_RLEs.tp_print = 0; + if (PyObject_SetAttrString(__pyx_m, "RLEs", (PyObject *)&__pyx_type_11pycocotools_5_mask_RLEs) < 0) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_ptype_11pycocotools_5_mask_RLEs = &__pyx_type_11pycocotools_5_mask_RLEs; + if (PyType_Ready(&__pyx_type_11pycocotools_5_mask_Masks) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __pyx_type_11pycocotools_5_mask_Masks.tp_print = 0; + if (PyObject_SetAttrString(__pyx_m, "Masks", (PyObject *)&__pyx_type_11pycocotools_5_mask_Masks) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __pyx_ptype_11pycocotools_5_mask_Masks = &__pyx_type_11pycocotools_5_mask_Masks; + /*--- Type import code ---*/ + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", + #if CYTHON_COMPILING_IN_PYPY + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(2, 9, __pyx_L1_error) + __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 155, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 168, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 172, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 181, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 861, __pyx_L1_error) + /*--- Variable import code ---*/ + /*--- Function import code ---*/ + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "pycocotools/_mask.pyx":11 + * #************************************************************************** + * + * __author__ = 'tsungyi' # <<<<<<<<<<<<<< + * + * # import both Python-level and C-level symbols of Numpy + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_author, __pyx_n_s_tsungyi) < 0) __PYX_ERR(0, 11, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":15 + * # import both Python-level and C-level symbols of Numpy + * # the API uses Numpy to interface C and Python + * import numpy as np # <<<<<<<<<<<<<< + * cimport numpy as np + * from libc.stdlib cimport malloc, free + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":20 + * + * # intialized Numpy. must do. + * np.import_array() # <<<<<<<<<<<<<< + * + * # import numpy C function + */ + __pyx_t_2 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 20, __pyx_L1_error) + + /* "pycocotools/_mask.pyx":100 + * + * # internal conversion from Python RLEs object to compressed RLE format + * def _toString(RLEs Rs): # <<<<<<<<<<<<<< + * cdef siz n = Rs.n + * cdef bytes py_string + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_1_toString, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_toString, __pyx_t_1) < 0) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":116 + * + * # internal conversion from compressed RLE format to Python RLEs object + * def _frString(rleObjs): # <<<<<<<<<<<<<< + * cdef siz n = len(rleObjs) + * Rs = RLEs(n) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_3_frString, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frString, __pyx_t_1) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":129 + * # encode mask to RLEs objects + * # list of RLE string can be generated by RLEs member function + * def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): # <<<<<<<<<<<<<< + * h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + * cdef RLEs Rs = RLEs(n) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_5encode, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_encode, __pyx_t_1) < 0) __PYX_ERR(0, 129, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":137 + * + * # decode mask from compressed list of RLE string or RLEs object + * def decode(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_7decode, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode, __pyx_t_1) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":144 + * return np.array(masks) + * + * def merge(rleObjs, bint intersect=0): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef RLEs R = RLEs(1) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_9merge, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_merge, __pyx_t_1) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":151 + * return obj + * + * def area(rleObjs): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef uint* _a = malloc(Rs._n* sizeof(uint)) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_11area, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_area, __pyx_t_1) < 0) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":163 + * + * # iou computation. support function overload (RLEs-RLEs and bbox-bbox). + * def iou( dt, gt, pyiscrowd ): # <<<<<<<<<<<<<< + * def _preproc(objs): + * if len(objs) == 0: + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_13iou, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_iou_2, __pyx_t_1) < 0) __PYX_ERR(0, 163, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":233 + * return iou.reshape((m,n), order='F') + * + * def toBbox( rleObjs ): # <<<<<<<<<<<<<< + * cdef RLEs Rs = _frString(rleObjs) + * cdef siz n = Rs.n + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_15toBbox, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_toBbox, __pyx_t_1) < 0) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":245 + * return bb + * + * def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef siz n = bb.shape[0] + * Rs = RLEs(n) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_17frBbox, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frBbox, __pyx_t_1) < 0) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":252 + * return objs + * + * def frPoly( poly, siz h, siz w ): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.double_t, ndim=1] np_poly + * n = len(poly) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_19frPoly, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frPoly, __pyx_t_1) < 0) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":262 + * return objs + * + * def frUncompressedRLE(ucRles, siz h, siz w): # <<<<<<<<<<<<<< + * cdef np.ndarray[np.uint32_t, ndim=1] cnts + * cdef RLE R + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_21frUncompressedRLE, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frUncompressedRLE, __pyx_t_1) < 0) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":280 + * return objs + * + * def frPyObjects(pyobj, siz h, w): # <<<<<<<<<<<<<< + * if type(pyobj) == np.ndarray: + * objs = frBbox(pyobj, h, w ) + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11pycocotools_5_mask_23frPyObjects, NULL, __pyx_n_s_pycocotools__mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_frPyObjects, __pyx_t_1) < 0) __PYX_ERR(0, 280, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "pycocotools/_mask.pyx":1 + * # distutils: language = c # <<<<<<<<<<<<<< + * # distutils: sources = ../MatlabAPI/private/maskApi.c + * + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "../../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init pycocotools._mask", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_DECREF(__pyx_m); __pyx_m = 0; + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init pycocotools._mask"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if PY_MAJOR_VERSION < 3 + return; + #else + return __pyx_m; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule((char *)modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } +#if PY_VERSION_HEX >= 0x03030000 + if (cause) { +#else + if (cause && cause != Py_None) { +#endif + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = PyThreadState_GET(); + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* ExtTypeTest */ + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(PyObject_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + +/* ArgTypeTest */ + static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); +} +static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, + const char *name, int exact) +{ + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (none_allowed && obj == Py_None) return 1; + else if (exact) { + if (likely(Py_TYPE(obj) == type)) return 1; + #if PY_MAJOR_VERSION == 2 + else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(PyObject_TypeCheck(obj, type))) return 1; + } + __Pyx_RaiseArgumentTypeInvalid(name, obj, type); + return 0; +} + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long x; + long a = PyInt_AS_LONG(op1); + x = (long)((unsigned long)a + b); + if (likely((x^a) >= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + if (likely(__Pyx_sst_abs(size) <= 1)) { + a = likely(size) ? digits[0] : 0; + if (size == -1) a = -a; + } else { + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; + double a = PyFloat_AS_DOUBLE(op1); + double result; + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* GetItemInt */ + static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* BufferFormatCheck */ + static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { + unsigned int n = 1; + return *(unsigned char*)(&n) != 0; +} +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type) { + stack[0].field = &ctx->root; + stack[0].parent_offset = 0; + ctx->root.type = type; + ctx->root.name = "buffer dtype"; + ctx->root.offset = 0; + ctx->head = stack; + ctx->head->field = &ctx->root; + ctx->fmt_offset = 0; + ctx->head->parent_offset = 0; + ctx->new_packmode = '@'; + ctx->enc_packmode = '@'; + ctx->new_count = 1; + ctx->enc_count = 0; + ctx->enc_type = 0; + ctx->is_complex = 0; + ctx->is_valid_array = 0; + ctx->struct_alignment = 0; + while (type->typegroup == 'S') { + ++ctx->head; + ctx->head->field = type->fields; + ctx->head->parent_offset = 0; + type = type->fields->type; + } +} +static int __Pyx_BufFmt_ParseNumber(const char** ts) { + int count; + const char* t = *ts; + if (*t < '0' || *t > '9') { + return -1; + } else { + count = *t++ - '0'; + while (*t >= '0' && *t < '9') { + count *= 10; + count += *t++ - '0'; + } + } + *ts = t; + return count; +} +static int __Pyx_BufFmt_ExpectNumber(const char **ts) { + int number = __Pyx_BufFmt_ParseNumber(ts); + if (number == -1) + PyErr_Format(PyExc_ValueError,\ + "Does not understand character buffer dtype format string ('%c')", **ts); + return number; +} +static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { + PyErr_Format(PyExc_ValueError, + "Unexpected format string character: '%c'", ch); +} +static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { + switch (ch) { + case 'c': return "'char'"; + case 'b': return "'signed char'"; + case 'B': return "'unsigned char'"; + case 'h': return "'short'"; + case 'H': return "'unsigned short'"; + case 'i': return "'int'"; + case 'I': return "'unsigned int'"; + case 'l': return "'long'"; + case 'L': return "'unsigned long'"; + case 'q': return "'long long'"; + case 'Q': return "'unsigned long long'"; + case 'f': return (is_complex ? "'complex float'" : "'float'"); + case 'd': return (is_complex ? "'complex double'" : "'double'"); + case 'g': return (is_complex ? "'complex long double'" : "'long double'"); + case 'T': return "a struct"; + case 'O': return "Python object"; + case 'P': return "a pointer"; + case 's': case 'p': return "a string"; + case 0: return "end"; + default: return "unparseable format string"; + } +} +static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return 2; + case 'i': case 'I': case 'l': case 'L': return 4; + case 'q': case 'Q': return 8; + case 'f': return (is_complex ? 8 : 4); + case 'd': return (is_complex ? 16 : 8); + case 'g': { + PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); + return 0; + } + case 'O': case 'P': return sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { + switch (ch) { + case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(short); + case 'i': case 'I': return sizeof(int); + case 'l': case 'L': return sizeof(long); + #ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(PY_LONG_LONG); + #endif + case 'f': return sizeof(float) * (is_complex ? 2 : 1); + case 'd': return sizeof(double) * (is_complex ? 2 : 1); + case 'g': return sizeof(long double) * (is_complex ? 2 : 1); + case 'O': case 'P': return sizeof(void*); + default: { + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } + } +} +typedef struct { char c; short x; } __Pyx_st_short; +typedef struct { char c; int x; } __Pyx_st_int; +typedef struct { char c; long x; } __Pyx_st_long; +typedef struct { char c; float x; } __Pyx_st_float; +typedef struct { char c; double x; } __Pyx_st_double; +typedef struct { char c; long double x; } __Pyx_st_longdouble; +typedef struct { char c; void *x; } __Pyx_st_void_p; +#ifdef HAVE_LONG_LONG +typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; +#endif +static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); + case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); + case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); +#ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); +#endif + case 'f': return sizeof(__Pyx_st_float) - sizeof(float); + case 'd': return sizeof(__Pyx_st_double) - sizeof(double); + case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); + case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +/* These are for computing the padding at the end of the struct to align + on the first member of the struct. This will probably the same as above, + but we don't have any guarantees. + */ +typedef struct { short x; char c; } __Pyx_pad_short; +typedef struct { int x; char c; } __Pyx_pad_int; +typedef struct { long x; char c; } __Pyx_pad_long; +typedef struct { float x; char c; } __Pyx_pad_float; +typedef struct { double x; char c; } __Pyx_pad_double; +typedef struct { long double x; char c; } __Pyx_pad_longdouble; +typedef struct { void *x; char c; } __Pyx_pad_void_p; +#ifdef HAVE_LONG_LONG +typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; +#endif +static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); + case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); + case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); +#ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); +#endif + case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); + case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); + case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); + case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { + switch (ch) { + case 'c': + return 'H'; + case 'b': case 'h': case 'i': + case 'l': case 'q': case 's': case 'p': + return 'I'; + case 'B': case 'H': case 'I': case 'L': case 'Q': + return 'U'; + case 'f': case 'd': case 'g': + return (is_complex ? 'C' : 'R'); + case 'O': + return 'O'; + case 'P': + return 'P'; + default: { + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } + } +} +static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { + if (ctx->head == NULL || ctx->head->field == &ctx->root) { + const char* expected; + const char* quote; + if (ctx->head == NULL) { + expected = "end"; + quote = ""; + } else { + expected = ctx->head->field->type->name; + quote = "'"; + } + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch, expected %s%s%s but got %s", + quote, expected, quote, + __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); + } else { + __Pyx_StructField* field = ctx->head->field; + __Pyx_StructField* parent = (ctx->head - 1)->field; + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", + field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), + parent->type->name, field->name); + } +} +static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { + char group; + size_t size, offset, arraysize = 1; + if (ctx->enc_type == 0) return 0; + if (ctx->head->field->type->arraysize[0]) { + int i, ndim = 0; + if (ctx->enc_type == 's' || ctx->enc_type == 'p') { + ctx->is_valid_array = ctx->head->field->type->ndim == 1; + ndim = 1; + if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { + PyErr_Format(PyExc_ValueError, + "Expected a dimension of size %zu, got %zu", + ctx->head->field->type->arraysize[0], ctx->enc_count); + return -1; + } + } + if (!ctx->is_valid_array) { + PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", + ctx->head->field->type->ndim, ndim); + return -1; + } + for (i = 0; i < ctx->head->field->type->ndim; i++) { + arraysize *= ctx->head->field->type->arraysize[i]; + } + ctx->is_valid_array = 0; + ctx->enc_count = 1; + } + group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); + do { + __Pyx_StructField* field = ctx->head->field; + __Pyx_TypeInfo* type = field->type; + if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { + size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); + } else { + size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); + } + if (ctx->enc_packmode == '@') { + size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); + size_t align_mod_offset; + if (align_at == 0) return -1; + align_mod_offset = ctx->fmt_offset % align_at; + if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; + if (ctx->struct_alignment == 0) + ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, + ctx->is_complex); + } + if (type->size != size || type->typegroup != group) { + if (type->typegroup == 'C' && type->fields != NULL) { + size_t parent_offset = ctx->head->parent_offset + field->offset; + ++ctx->head; + ctx->head->field = type->fields; + ctx->head->parent_offset = parent_offset; + continue; + } + if ((type->typegroup == 'H' || group == 'H') && type->size == size) { + } else { + __Pyx_BufFmt_RaiseExpected(ctx); + return -1; + } + } + offset = ctx->head->parent_offset + field->offset; + if (ctx->fmt_offset != offset) { + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", + (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); + return -1; + } + ctx->fmt_offset += size; + if (arraysize) + ctx->fmt_offset += (arraysize - 1) * size; + --ctx->enc_count; + while (1) { + if (field == &ctx->root) { + ctx->head = NULL; + if (ctx->enc_count != 0) { + __Pyx_BufFmt_RaiseExpected(ctx); + return -1; + } + break; + } + ctx->head->field = ++field; + if (field->type == NULL) { + --ctx->head; + field = ctx->head->field; + continue; + } else if (field->type->typegroup == 'S') { + size_t parent_offset = ctx->head->parent_offset + field->offset; + if (field->type->fields->type == NULL) continue; + field = field->type->fields; + ++ctx->head; + ctx->head->field = field; + ctx->head->parent_offset = parent_offset; + break; + } else { + break; + } + } + } while (ctx->enc_count); + ctx->enc_type = 0; + ctx->is_complex = 0; + return 0; +} +static CYTHON_INLINE PyObject * +__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) +{ + const char *ts = *tsp; + int i = 0, number; + int ndim = ctx->head->field->type->ndim; +; + ++ts; + if (ctx->new_count != 1) { + PyErr_SetString(PyExc_ValueError, + "Cannot handle repeated arrays in format string"); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + while (*ts && *ts != ')') { + switch (*ts) { + case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; + default: break; + } + number = __Pyx_BufFmt_ExpectNumber(&ts); + if (number == -1) return NULL; + if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) + return PyErr_Format(PyExc_ValueError, + "Expected a dimension of size %zu, got %d", + ctx->head->field->type->arraysize[i], number); + if (*ts != ',' && *ts != ')') + return PyErr_Format(PyExc_ValueError, + "Expected a comma in format string, got '%c'", *ts); + if (*ts == ',') ts++; + i++; + } + if (i != ndim) + return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", + ctx->head->field->type->ndim, i); + if (!*ts) { + PyErr_SetString(PyExc_ValueError, + "Unexpected end of format string, expected ')'"); + return NULL; + } + ctx->is_valid_array = 1; + ctx->new_count = 1; + *tsp = ++ts; + return Py_None; +} +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { + int got_Z = 0; + while (1) { + switch(*ts) { + case 0: + if (ctx->enc_type != 0 && ctx->head == NULL) { + __Pyx_BufFmt_RaiseExpected(ctx); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + if (ctx->head != NULL) { + __Pyx_BufFmt_RaiseExpected(ctx); + return NULL; + } + return ts; + case ' ': + case '\r': + case '\n': + ++ts; + break; + case '<': + if (!__Pyx_IsLittleEndian()) { + PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); + return NULL; + } + ctx->new_packmode = '='; + ++ts; + break; + case '>': + case '!': + if (__Pyx_IsLittleEndian()) { + PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); + return NULL; + } + ctx->new_packmode = '='; + ++ts; + break; + case '=': + case '@': + case '^': + ctx->new_packmode = *ts++; + break; + case 'T': + { + const char* ts_after_sub; + size_t i, struct_count = ctx->new_count; + size_t struct_alignment = ctx->struct_alignment; + ctx->new_count = 1; + ++ts; + if (*ts != '{') { + PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_type = 0; + ctx->enc_count = 0; + ctx->struct_alignment = 0; + ++ts; + ts_after_sub = ts; + for (i = 0; i != struct_count; ++i) { + ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); + if (!ts_after_sub) return NULL; + } + ts = ts_after_sub; + if (struct_alignment) ctx->struct_alignment = struct_alignment; + } + break; + case '}': + { + size_t alignment = ctx->struct_alignment; + ++ts; + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_type = 0; + if (alignment && ctx->fmt_offset % alignment) { + ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); + } + } + return ts; + case 'x': + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->fmt_offset += ctx->new_count; + ctx->new_count = 1; + ctx->enc_count = 0; + ctx->enc_type = 0; + ctx->enc_packmode = ctx->new_packmode; + ++ts; + break; + case 'Z': + got_Z = 1; + ++ts; + if (*ts != 'f' && *ts != 'd' && *ts != 'g') { + __Pyx_BufFmt_RaiseUnexpectedChar('Z'); + return NULL; + } + case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': + case 'l': case 'L': case 'q': case 'Q': + case 'f': case 'd': case 'g': + case 'O': case 'p': + if (ctx->enc_type == *ts && got_Z == ctx->is_complex && + ctx->enc_packmode == ctx->new_packmode) { + ctx->enc_count += ctx->new_count; + ctx->new_count = 1; + got_Z = 0; + ++ts; + break; + } + case 's': + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_count = ctx->new_count; + ctx->enc_packmode = ctx->new_packmode; + ctx->enc_type = *ts; + ctx->is_complex = got_Z; + ++ts; + ctx->new_count = 1; + got_Z = 0; + break; + case ':': + ++ts; + while(*ts != ':') ++ts; + ++ts; + break; + case '(': + if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; + break; + default: + { + int number = __Pyx_BufFmt_ExpectNumber(&ts); + if (number == -1) return NULL; + ctx->new_count = (size_t)number; + } + } + } +} +static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) { + buf->buf = NULL; + buf->obj = NULL; + buf->strides = __Pyx_zeros; + buf->shape = __Pyx_zeros; + buf->suboffsets = __Pyx_minusones; +} +static CYTHON_INLINE int __Pyx_GetBufferAndValidate( + Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, + int nd, int cast, __Pyx_BufFmt_StackElem* stack) +{ + if (obj == Py_None || obj == NULL) { + __Pyx_ZeroBuffer(buf); + return 0; + } + buf->buf = NULL; + if (__Pyx_GetBuffer(obj, buf, flags) == -1) goto fail; + if (buf->ndim != nd) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + nd, buf->ndim); + goto fail; + } + if (!cast) { + __Pyx_BufFmt_Context ctx; + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; + } + if ((unsigned)buf->itemsize != dtype->size) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", + buf->itemsize, (buf->itemsize > 1) ? "s" : "", + dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; + return 0; +fail:; + __Pyx_ZeroBuffer(buf); + return -1; +} +static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { + if (info->buf == NULL) return; + if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; + __Pyx_ReleaseBuffer(info); +} + +/* GetModuleGlobalName */ + static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS + result = PyDict_GetItem(__pyx_d, name); + if (likely(result)) { + Py_INCREF(result); + } else { +#else + result = PyObject_GetItem(__pyx_d, name); + if (!result) { + PyErr_Clear(); +#endif + result = __Pyx_GetBuiltinName(name); + } + return result; +} + +/* PyCFunctionFastCall */ + #if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); +} +#endif // CYTHON_FAST_PYCCALL + +/* PyFunctionFastCall */ + #if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = PyThreadState_GET(); + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif // CPython < 3.6 +#endif // CYTHON_FAST_PYCALL + +/* PyObjectCallMethO */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyIntBinop */ + #if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { + if (op1 == op2) { + Py_RETURN_TRUE; + } + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(op1))) { + const long b = intval; + long a = PyInt_AS_LONG(op1); + if (a == b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a; + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + if (likely(__Pyx_sst_abs(size) <= 1)) { + a = likely(size) ? digits[0] : 0; + if (size == -1) a = -a; + } else { + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + } + #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 + default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); + #else + default: Py_RETURN_FALSE; + #endif + } + } + if (a == b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; + double a = PyFloat_AS_DOUBLE(op1); + if ((double)a == (double)b) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + } + return PyObject_RichCompare(op1, op2, Py_EQ); +} +#endif + +/* FetchCommonType */ + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* fake_module; + PyTypeObject* cached_type = NULL; + fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); + if (!fake_module) return NULL; + Py_INCREF(fake_module); + cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); + if (cached_type) { + if (!PyType_Check((PyObject*)cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", + type->tp_name); + goto bad; + } + if (cached_type->tp_basicsize != type->tp_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + type->tp_name); + goto bad; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; + } +done: + Py_DECREF(fake_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CythonFunction */ + static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) +{ + if (unlikely(op->func_doc == NULL)) { + if (op->func.m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp = op->func_doc; + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + op->func_doc = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + tmp = op->func_name; + Py_INCREF(value); + op->func_name = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + tmp = op->func_qualname; + Py_INCREF(value); + op->func_qualname = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) +{ + PyObject *self; + self = m->func_closure; + if (self == NULL) + self = Py_None; + Py_INCREF(self); + return self; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + tmp = op->func_dict; + Py_INCREF(value); + op->func_dict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) +{ + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyTuple_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_tuple; + op->defaults_tuple = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_kwdict; + op->defaults_kwdict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value || value == Py_None) { + value = NULL; + } else if (!PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + tmp = op->func_annotations; + op->func_annotations = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0}, + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromString(m->func.m_ml->ml_name); +#else + return PyString_FromString(m->func.m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); + if (op == NULL) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + op->func.m_ml = ml; + op->func.m_self = (PyObject *) op; + Py_XINCREF(closure); + op->func_closure = closure; + Py_XINCREF(module); + op->func.m_module = module; + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; + op->func_classobj = NULL; + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + PyObject_GC_Track(op); + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); + Py_CLEAR(m->func.m_module); + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); + Py_CLEAR(m->func_classobj); + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + PyObject_GC_Del(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); + Py_VISIT(m->func.m_module); + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); + Py_VISIT(m->func_classobj); + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) +{ + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(func); + return func; + } + if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { + if (type == NULL) + type = (PyObject *)(Py_TYPE(obj)); + return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); + } + if (obj == Py_None) + obj = NULL; + return __Pyx_PyMethod_New(func, obj, type); +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + Py_ssize_t size; + switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 0)) + return (*meth)(self, NULL); + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 1)) { + PyObject *result, *arg0 = PySequence_ITEM(arg, 0); + if (unlikely(!arg0)) return NULL; + result = (*meth)(self, arg0); + Py_DECREF(arg0); + return result; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags in " + "__Pyx_CyFunction_Call. METH_OLDARGS is no " + "longer supported!"); + return NULL; + } + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; + argc = PyTuple_GET_SIZE(args); + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, + 0, + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_CyFunction_descr_get, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +}; +static int __pyx_CyFunction_init(void) { + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); + if (__pyx_CyFunctionType == NULL) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (!m->defaults) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* BufferFallbackError */ + static void __Pyx_RaiseBufferFallbackError(void) { + PyErr_SetString(PyExc_ValueError, + "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); +} + +/* None */ + static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) { + Py_ssize_t q = a / b; + Py_ssize_t r = a - q*b; + q -= ((r != 0) & ((r ^ b) < 0)); + return q; +} + +/* BufferIndexError */ + static void __Pyx_RaiseBufferIndexError(int axis) { + PyErr_Format(PyExc_IndexError, + "Out of bounds on buffer access (axis %d)", axis); +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* RaiseNoneIterError */ + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* SaveResetException */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { + PyObject *exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + return PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { +#endif + PyObject *local_type, *local_value, *local_tb; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.')) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(1); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_VERSION_HEX < 0x03030000 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; +} + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + py_code = __pyx_find_code_object(c_line ? c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? c_line : py_line, py_code); + } + py_frame = PyFrame_New( + PyThreadState_GET(), /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +#if PY_MAJOR_VERSION < 3 +static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { + if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); + if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags); + PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); + return -1; +} +static void __Pyx_ReleaseBuffer(Py_buffer *view) { + PyObject *obj = view->obj; + if (!obj) return; + if (PyObject_CheckBuffer(obj)) { + PyBuffer_Release(view); + return; + } + if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) { __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view); return; } + Py_DECREF(obj); + view->obj = NULL; +} +#endif + + + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_siz(siz value) { + const siz neg_one = (siz) -1, const_zero = (siz) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(siz) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(siz) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(siz) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(siz) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(siz) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(siz), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value) { + const Py_intptr_t neg_one = (Py_intptr_t) -1, const_zero = (Py_intptr_t) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(Py_intptr_t) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(Py_intptr_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(Py_intptr_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(Py_intptr_t) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(Py_intptr_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(Py_intptr_t), + little, !is_unsigned); + } +} + +/* Declarations */ + #if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + __pyx_t_float_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = 1.0 / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = 1.0 / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0, -1); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ + #if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = 1.0 / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = 1.0 / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0, -1); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(enum NPY_TYPES) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(enum NPY_TYPES) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES), + little, !is_unsigned); + } +} + +/* CIntFromPy */ + static CYTHON_INLINE siz __Pyx_PyInt_As_siz(PyObject *x) { + const siz neg_one = (siz) -1, const_zero = (siz) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(siz) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(siz, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (siz) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (siz) 0; + case 1: __PYX_VERIFY_RETURN_INT(siz, digit, digits[0]) + case 2: + if (8 * sizeof(siz) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) >= 2 * PyLong_SHIFT) { + return (siz) (((((siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(siz) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) >= 3 * PyLong_SHIFT) { + return (siz) (((((((siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(siz) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) >= 4 * PyLong_SHIFT) { + return (siz) (((((((((siz)digits[3]) << PyLong_SHIFT) | (siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (siz) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(siz) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(siz, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(siz) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(siz, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (siz) 0; + case -1: __PYX_VERIFY_RETURN_INT(siz, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(siz, digit, +digits[0]) + case -2: + if (8 * sizeof(siz) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 2 * PyLong_SHIFT) { + return (siz) (((siz)-1)*(((((siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(siz) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 2 * PyLong_SHIFT) { + return (siz) ((((((siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(siz) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 3 * PyLong_SHIFT) { + return (siz) (((siz)-1)*(((((((siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(siz) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 3 * PyLong_SHIFT) { + return (siz) ((((((((siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(siz) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 4 * PyLong_SHIFT) { + return (siz) (((siz)-1)*(((((((((siz)digits[3]) << PyLong_SHIFT) | (siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(siz) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(siz, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(siz) - 1 > 4 * PyLong_SHIFT) { + return (siz) ((((((((((siz)digits[3]) << PyLong_SHIFT) | (siz)digits[2]) << PyLong_SHIFT) | (siz)digits[1]) << PyLong_SHIFT) | (siz)digits[0]))); + } + } + break; + } +#endif + if (sizeof(siz) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(siz, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(siz) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(siz, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + siz val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (siz) -1; + } + } else { + siz val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (siz) -1; + val = __Pyx_PyInt_As_siz(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to siz"); + return (siz) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to siz"); + return (siz) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { + const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(size_t) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (size_t) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0]) + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) { + return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) { + return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) { + return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (size_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(size_t) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (size_t) 0; + case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0]) + case -2: + if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) { + return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); + } + } + break; + } +#endif + if (sizeof(size_t) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + size_t val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (size_t) -1; + } + } else { + size_t val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (size_t) -1; + val = __Pyx_PyInt_As_size_t(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); + return (size_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to size_t"); + return (size_t) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { + char ctversion[4], rtversion[4]; + PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); + PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); + if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compiletime version %s of module '%.100s' " + "does not match runtime version %s", + ctversion, __Pyx_MODULE_NAME, rtversion); + return PyErr_WarnEx(NULL, message, 1); + } + return 0; +} + +/* ModuleImport */ + #ifndef __PYX_HAVE_RT_ImportModule +#define __PYX_HAVE_RT_ImportModule +static PyObject *__Pyx_ImportModule(const char *name) { + PyObject *py_name = 0; + PyObject *py_module = 0; + py_name = __Pyx_PyIdentifier_FromString(name); + if (!py_name) + goto bad; + py_module = PyImport_Import(py_name); + Py_DECREF(py_name); + return py_module; +bad: + Py_XDECREF(py_name); + return 0; +} +#endif + +/* TypeImport */ + #ifndef __PYX_HAVE_RT_ImportType +#define __PYX_HAVE_RT_ImportType +static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, + size_t size, int strict) +{ + PyObject *py_module = 0; + PyObject *result = 0; + PyObject *py_name = 0; + char warning[200]; + Py_ssize_t basicsize; +#ifdef Py_LIMITED_API + PyObject *py_basicsize; +#endif + py_module = __Pyx_ImportModule(module_name); + if (!py_module) + goto bad; + py_name = __Pyx_PyIdentifier_FromString(class_name); + if (!py_name) + goto bad; + result = PyObject_GetAttr(py_module, py_name); + Py_DECREF(py_name); + py_name = 0; + Py_DECREF(py_module); + py_module = 0; + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#ifndef Py_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (!strict && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd", + module_name, class_name, basicsize, size); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + else if ((size_t)basicsize != size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd", + module_name, class_name, basicsize, size); + goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(py_module); + Py_XDECREF(result); + return NULL; +} +#endif + +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { +#if PY_VERSION_HEX < 0x03030000 + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +#else + if (__Pyx_PyUnicode_READY(o) == -1) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (PyUnicode_IS_ASCII(o)) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +#endif + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (PyInt_Check(x) || PyLong_Check(x)) +#else + if (PyLong_Check(x)) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = PyNumber_Int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = PyNumber_Long(x); + } + #else + if (m && m->nb_int) { + name = "int"; + res = PyNumber_Long(x); + } + #endif +#else + res = PyNumber_Int(x); +#endif + if (res) { +#if PY_MAJOR_VERSION < 3 + if (!PyInt_Check(res) && !PyLong_Check(res)) { +#else + if (!PyLong_Check(res)) { +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + name, name, Py_TYPE(res)->tp_name); + Py_DECREF(res); + return NULL; + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(x); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/examples/rfcn/lib/pycocotools/_mask.pyx b/examples/rfcn/lib/pycocotools/_mask.pyx new file mode 100644 index 000000000..e08f1f480 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/_mask.pyx @@ -0,0 +1,291 @@ +# distutils: language = c +# distutils: sources = ../MatlabAPI/private/maskApi.c + +#************************************************************************** +# Microsoft COCO Toolbox. version 2.0 +# Data, paper, and tutorials available at: http://mscoco.org/ +# Code written by Piotr Dollar and Tsung-Yi Lin, 2015. +# Licensed under the Simplified BSD License [see coco/license.txt] +#************************************************************************** + +__author__ = 'tsungyi' + +# import both Python-level and C-level symbols of Numpy +# the API uses Numpy to interface C and Python +import numpy as np +cimport numpy as np +from libc.stdlib cimport malloc, free + +# intialized Numpy. must do. +np.import_array() + +# import numpy C function +# we use PyArray_ENABLEFLAGS to make Numpy ndarray responsible to memoery management +cdef extern from "numpy/arrayobject.h": + void PyArray_ENABLEFLAGS(np.ndarray arr, int flags) + +# Declare the prototype of the C functions in MaskApi.h +cdef extern from "maskApi.h": + ctypedef unsigned int uint + ctypedef unsigned long siz + ctypedef unsigned char byte + ctypedef double* BB + ctypedef struct RLE: + siz h, + siz w, + siz m, + uint* cnts, + void rlesInit( RLE **R, siz n ) + void rleEncode( RLE *R, const byte *M, siz h, siz w, siz n ) + void rleDecode( const RLE *R, byte *mask, siz n ) + void rleMerge( const RLE *R, RLE *M, siz n, bint intersect ) + void rleArea( const RLE *R, siz n, uint *a ) + void rleIou( RLE *dt, RLE *gt, siz m, siz n, byte *iscrowd, double *o ) + void bbIou( BB dt, BB gt, siz m, siz n, byte *iscrowd, double *o ) + void rleToBbox( const RLE *R, BB bb, siz n ) + void rleFrBbox( RLE *R, const BB bb, siz h, siz w, siz n ) + void rleFrPoly( RLE *R, const double *xy, siz k, siz h, siz w ) + char* rleToString( const RLE *R ) + void rleFrString( RLE *R, char *s, siz h, siz w ) + +# python class to wrap RLE array in C +# the class handles the memory allocation and deallocation +cdef class RLEs: + cdef RLE *_R + cdef siz _n + + def __cinit__(self, siz n =0): + rlesInit(&self._R, n) + self._n = n + + # free the RLE array here + def __dealloc__(self): + if self._R is not NULL: + for i in range(self._n): + free(self._R[i].cnts) + free(self._R) + def __getattr__(self, key): + if key == 'n': + return self._n + raise AttributeError(key) + +# python class to wrap Mask array in C +# the class handles the memory allocation and deallocation +cdef class Masks: + cdef byte *_mask + cdef siz _h + cdef siz _w + cdef siz _n + + def __cinit__(self, h, w, n): + self._mask = malloc(h*w*n* sizeof(byte)) + self._h = h + self._w = w + self._n = n + # def __dealloc__(self): + # the memory management of _mask has been passed to np.ndarray + # it doesn't need to be freed here + + # called when passing into np.array() and return an np.ndarray in column-major order + def __array__(self): + cdef np.npy_intp shape[1] + shape[0] = self._h*self._w*self._n + # Create a 1D array, and reshape it to fortran/Matlab column-major array + ndarray = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT8, self._mask).reshape((self._h, self._w, self._n), order='F') + # The _mask allocated by Masks is now handled by ndarray + PyArray_ENABLEFLAGS(ndarray, np.NPY_OWNDATA) + return ndarray + +# internal conversion from Python RLEs object to compressed RLE format +def _toString(RLEs Rs): + cdef siz n = Rs.n + cdef bytes py_string + cdef char* c_string + objs = [] + for i in range(n): + c_string = rleToString( &Rs._R[i] ) + py_string = c_string + objs.append({ + 'size': [Rs._R[i].h, Rs._R[i].w], + 'counts': py_string + }) + free(c_string) + return objs + +# internal conversion from compressed RLE format to Python RLEs object +def _frString(rleObjs): + cdef siz n = len(rleObjs) + Rs = RLEs(n) + cdef bytes py_string + cdef char* c_string + for i, obj in enumerate(rleObjs): + py_string = str(obj['counts']) + c_string = py_string + rleFrString( &Rs._R[i], c_string, obj['size'][0], obj['size'][1] ) + return Rs + +# encode mask to RLEs objects +# list of RLE string can be generated by RLEs member function +def encode(np.ndarray[np.uint8_t, ndim=3, mode='fortran'] mask): + h, w, n = mask.shape[0], mask.shape[1], mask.shape[2] + cdef RLEs Rs = RLEs(n) + rleEncode(Rs._R,mask.data,h,w,n) + objs = _toString(Rs) + return objs + +# decode mask from compressed list of RLE string or RLEs object +def decode(rleObjs): + cdef RLEs Rs = _frString(rleObjs) + h, w, n = Rs._R[0].h, Rs._R[0].w, Rs._n + masks = Masks(h, w, n) + rleDecode( Rs._R, masks._mask, n ); + return np.array(masks) + +def merge(rleObjs, bint intersect=0): + cdef RLEs Rs = _frString(rleObjs) + cdef RLEs R = RLEs(1) + rleMerge(Rs._R, R._R, Rs._n, intersect) + obj = _toString(R)[0] + return obj + +def area(rleObjs): + cdef RLEs Rs = _frString(rleObjs) + cdef uint* _a = malloc(Rs._n* sizeof(uint)) + rleArea(Rs._R, Rs._n, _a) + cdef np.npy_intp shape[1] + shape[0] = Rs._n + a = np.array((Rs._n, ), dtype=np.uint8) + a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) + PyArray_ENABLEFLAGS(a, np.NPY_OWNDATA) + return a + +# iou computation. support function overload (RLEs-RLEs and bbox-bbox). +def iou( dt, gt, pyiscrowd ): + def _preproc(objs): + if len(objs) == 0: + return objs + if type(objs) == np.ndarray: + if len(objs.shape) == 1: + objs = objs.reshape((objs[0], 1)) + # check if it's Nx4 bbox + if not len(objs.shape) == 2 or not objs.shape[1] == 4: + raise Exception('numpy ndarray input is only for *bounding boxes* and should have Nx4 dimension') + objs = objs.astype(np.double) + elif type(objs) == list: + # check if list is in box format and convert it to np.ndarray + isbox = np.all(np.array([(len(obj)==4) and ((type(obj)==list) or (type(obj)==np.ndarray)) for obj in objs])) + isrle = np.all(np.array([type(obj) == dict for obj in objs])) + if isbox: + objs = np.array(objs, dtype=np.double) + if len(objs.shape) == 1: + objs = objs.reshape((1,objs.shape[0])) + elif isrle: + objs = _frString(objs) + else: + raise Exception('list input can be bounding box (Nx4) or RLEs ([RLE])') + else: + raise Exception('unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.') + return objs + def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + rleIou( dt._R, gt._R, m, n, iscrowd.data, _iou.data ) + def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): + bbIou( dt.data, gt.data, m, n, iscrowd.data, _iou.data ) + def _len(obj): + cdef siz N = 0 + if type(obj) == RLEs: + N = obj.n + elif len(obj)==0: + pass + elif type(obj) == np.ndarray: + N = obj.shape[0] + return N + # convert iscrowd to numpy array + cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) + # simple type checking + cdef siz m, n + dt = _preproc(dt) + gt = _preproc(gt) + m = _len(dt) + n = _len(gt) + if m == 0 or n == 0: + return [] + if not type(dt) == type(gt): + raise Exception('The dt and gt should have the same data type, either RLEs, list or np.ndarray') + + # define local variables + cdef double* _iou = 0 + cdef np.npy_intp shape[1] + # check type and assign iou function + if type(dt) == RLEs: + _iouFun = _rleIou + elif type(dt) == np.ndarray: + _iouFun = _bbIou + else: + raise Exception('input data type not allowed.') + _iou = malloc(m*n* sizeof(double)) + iou = np.zeros((m*n, ), dtype=np.double) + shape[0] = m*n + iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) + PyArray_ENABLEFLAGS(iou, np.NPY_OWNDATA) + _iouFun(dt, gt, iscrowd, m, n, iou) + return iou.reshape((m,n), order='F') + +def toBbox( rleObjs ): + cdef RLEs Rs = _frString(rleObjs) + cdef siz n = Rs.n + cdef BB _bb = malloc(4*n* sizeof(double)) + rleToBbox( Rs._R, _bb, n ) + cdef np.npy_intp shape[1] + shape[0] = 4*n + bb = np.array((1,4*n), dtype=np.double) + bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) + PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) + return bb + +def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): + cdef siz n = bb.shape[0] + Rs = RLEs(n) + rleFrBbox( Rs._R, bb.data, h, w, n ) + objs = _toString(Rs) + return objs + +def frPoly( poly, siz h, siz w ): + cdef np.ndarray[np.double_t, ndim=1] np_poly + n = len(poly) + Rs = RLEs(n) + for i, p in enumerate(poly): + np_poly = np.array(p, dtype=np.double, order='F') + rleFrPoly( &Rs._R[i], np_poly.data, len(np_poly)/2, h, w ) + objs = _toString(Rs) + return objs + +def frUncompressedRLE(ucRles, siz h, siz w): + cdef np.ndarray[np.uint32_t, ndim=1] cnts + cdef RLE R + cdef uint *data + n = len(ucRles) + objs = [] + for i in range(n): + Rs = RLEs(1) + cnts = np.array(ucRles[i]['counts'], dtype=np.uint32) + # time for malloc can be saved here but it's fine + data = malloc(len(cnts)* sizeof(uint)) + for j in range(len(cnts)): + data[j] = cnts[j] + R = RLE(ucRles[i]['size'][0], ucRles[i]['size'][1], len(cnts), data) + Rs._R[0] = R + objs.append(_toString(Rs)[0]) + return objs + +def frPyObjects(pyobj, siz h, w): + if type(pyobj) == np.ndarray: + objs = frBbox(pyobj, h, w ) + elif type(pyobj) == list and len(pyobj[0]) == 4: + objs = frBbox(pyobj, h, w ) + elif type(pyobj) == list and len(pyobj[0]) > 4: + objs = frPoly(pyobj, h, w ) + elif type(pyobj) == list and type(pyobj[0]) == dict: + objs = frUncompressedRLE(pyobj, h, w) + else: + raise Exception('input type is not supported.') + return objs diff --git a/examples/rfcn/lib/pycocotools/coco.py b/examples/rfcn/lib/pycocotools/coco.py new file mode 100644 index 000000000..5d9f6b826 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/coco.py @@ -0,0 +1,351 @@ +__author__ = 'tylin' +__version__ = '1.0.1' +# Interface for accessing the Microsoft COCO dataset. + +# Microsoft COCO is a large image dataset designed for object detection, +# segmentation, and caption generation. pycocotools is a Python API that +# assists in loading, parsing and visualizing the annotations in COCO. +# Please visit http://mscoco.org/ for more information on COCO, including +# for the data, paper, and tutorials. The exact format of the annotations +# is also described on the COCO website. For example usage of the pycocotools +# please see pycocotools_demo.ipynb. In addition to this API, please download both +# the COCO images and annotations in order to run the demo. + +# An alternative to using the API is to load the annotations directly +# into Python dictionary +# Using the API provides additional utility functions. Note that this API +# supports both *instance* and *caption* annotations. In the case of +# captions not all functions are defined (e.g. categories are undefined). + +# The following API functions are defined: +# COCO - COCO api class that loads COCO annotation file and prepare data structures. +# decodeMask - Decode binary mask M encoded via run-length encoding. +# encodeMask - Encode binary mask M using run-length encoding. +# getAnnIds - Get ann ids that satisfy given filter conditions. +# getCatIds - Get cat ids that satisfy given filter conditions. +# getImgIds - Get img ids that satisfy given filter conditions. +# loadAnns - Load anns with the specified ids. +# loadCats - Load cats with the specified ids. +# loadImgs - Load imgs with the specified ids. +# segToMask - Convert polygon segmentation to binary mask. +# showAnns - Display the specified annotations. +# loadRes - Load algorithm results and create API for accessing them. +# download - Download COCO images from mscoco.org server. +# Throughout the API "ann"=annotation, "cat"=category, and "img"=image. +# Help on each functions can be accessed by: "help COCO>function". + +# See also COCO>decodeMask, +# COCO>encodeMask, COCO>getAnnIds, COCO>getCatIds, +# COCO>getImgIds, COCO>loadAnns, COCO>loadCats, +# COCO>loadImgs, COCO>segToMask, COCO>showAnns + +# Microsoft COCO Toolbox. version 2.0 +# Data, paper, and tutorials available at: http://mscoco.org/ +# Code written by Piotr Dollar and Tsung-Yi Lin, 2014. +# Licensed under the Simplified BSD License [see bsd.txt] + +import json +import datetime +import time +import matplotlib.pyplot as plt +from matplotlib.collections import PatchCollection +from matplotlib.patches import Polygon +import numpy as np +from skimage.draw import polygon +import urllib +import copy +import itertools +import mask +import os + +class COCO: + def __init__(self, annotation_file=None): + """ + Constructor of Microsoft COCO helper class for reading and visualizing annotations. + :param annotation_file (str): location of annotation file + :param image_folder (str): location to the folder that hosts images. + :return: + """ + # load dataset + self.dataset = {} + self.anns = [] + self.imgToAnns = {} + self.catToImgs = {} + self.imgs = {} + self.cats = {} + if not annotation_file == None: + print 'loading annotations into memory...' + tic = time.time() + dataset = json.load(open(annotation_file, 'r')) + print 'Done (t=%0.2fs)'%(time.time()- tic) + self.dataset = dataset + self.createIndex() + + def createIndex(self): + # create index + print 'creating index...' + anns = {} + imgToAnns = {} + catToImgs = {} + cats = {} + imgs = {} + if 'annotations' in self.dataset: + imgToAnns = {ann['image_id']: [] for ann in self.dataset['annotations']} + anns = {ann['id']: [] for ann in self.dataset['annotations']} + for ann in self.dataset['annotations']: + imgToAnns[ann['image_id']] += [ann] + anns[ann['id']] = ann + + if 'images' in self.dataset: + imgs = {im['id']: {} for im in self.dataset['images']} + for img in self.dataset['images']: + imgs[img['id']] = img + + if 'categories' in self.dataset: + cats = {cat['id']: [] for cat in self.dataset['categories']} + for cat in self.dataset['categories']: + cats[cat['id']] = cat + catToImgs = {cat['id']: [] for cat in self.dataset['categories']} + if 'annotations' in self.dataset: + for ann in self.dataset['annotations']: + catToImgs[ann['category_id']] += [ann['image_id']] + + print 'index created!' + + # create class members + self.anns = anns + self.imgToAnns = imgToAnns + self.catToImgs = catToImgs + self.imgs = imgs + self.cats = cats + + def info(self): + """ + Print information about the annotation file. + :return: + """ + for key, value in self.dataset['info'].items(): + print '%s: %s'%(key, value) + + def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None): + """ + Get ann ids that satisfy given filter conditions. default skips that filter + :param imgIds (int array) : get anns for given imgs + catIds (int array) : get anns for given cats + areaRng (float array) : get anns for given area range (e.g. [0 inf]) + iscrowd (boolean) : get anns for given crowd label (False or True) + :return: ids (int array) : integer array of ann ids + """ + imgIds = imgIds if type(imgIds) == list else [imgIds] + catIds = catIds if type(catIds) == list else [catIds] + + if len(imgIds) == len(catIds) == len(areaRng) == 0: + anns = self.dataset['annotations'] + else: + if not len(imgIds) == 0: + # this can be changed by defaultdict + lists = [self.imgToAnns[imgId] for imgId in imgIds if imgId in self.imgToAnns] + anns = list(itertools.chain.from_iterable(lists)) + else: + anns = self.dataset['annotations'] + anns = anns if len(catIds) == 0 else [ann for ann in anns if ann['category_id'] in catIds] + anns = anns if len(areaRng) == 0 else [ann for ann in anns if ann['area'] > areaRng[0] and ann['area'] < areaRng[1]] + if not iscrowd == None: + ids = [ann['id'] for ann in anns if ann['iscrowd'] == iscrowd] + else: + ids = [ann['id'] for ann in anns] + return ids + + def getCatIds(self, catNms=[], supNms=[], catIds=[]): + """ + filtering parameters. default skips that filter. + :param catNms (str array) : get cats for given cat names + :param supNms (str array) : get cats for given supercategory names + :param catIds (int array) : get cats for given cat ids + :return: ids (int array) : integer array of cat ids + """ + catNms = catNms if type(catNms) == list else [catNms] + supNms = supNms if type(supNms) == list else [supNms] + catIds = catIds if type(catIds) == list else [catIds] + + if len(catNms) == len(supNms) == len(catIds) == 0: + cats = self.dataset['categories'] + else: + cats = self.dataset['categories'] + cats = cats if len(catNms) == 0 else [cat for cat in cats if cat['name'] in catNms] + cats = cats if len(supNms) == 0 else [cat for cat in cats if cat['supercategory'] in supNms] + cats = cats if len(catIds) == 0 else [cat for cat in cats if cat['id'] in catIds] + ids = [cat['id'] for cat in cats] + return ids + + def getImgIds(self, imgIds=[], catIds=[]): + ''' + Get img ids that satisfy given filter conditions. + :param imgIds (int array) : get imgs for given ids + :param catIds (int array) : get imgs with all given cats + :return: ids (int array) : integer array of img ids + ''' + imgIds = imgIds if type(imgIds) == list else [imgIds] + catIds = catIds if type(catIds) == list else [catIds] + + if len(imgIds) == len(catIds) == 0: + ids = self.imgs.keys() + else: + ids = set(imgIds) + for i, catId in enumerate(catIds): + if i == 0 and len(ids) == 0: + ids = set(self.catToImgs[catId]) + else: + ids &= set(self.catToImgs[catId]) + return list(ids) + + def loadAnns(self, ids=[]): + """ + Load anns with the specified ids. + :param ids (int array) : integer ids specifying anns + :return: anns (object array) : loaded ann objects + """ + if type(ids) == list: + return [self.anns[id] for id in ids] + elif type(ids) == int: + return [self.anns[ids]] + + def loadCats(self, ids=[]): + """ + Load cats with the specified ids. + :param ids (int array) : integer ids specifying cats + :return: cats (object array) : loaded cat objects + """ + if type(ids) == list: + return [self.cats[id] for id in ids] + elif type(ids) == int: + return [self.cats[ids]] + + def loadImgs(self, ids=[]): + """ + Load anns with the specified ids. + :param ids (int array) : integer ids specifying img + :return: imgs (object array) : loaded img objects + """ + if type(ids) == list: + return [self.imgs[id] for id in ids] + elif type(ids) == int: + return [self.imgs[ids]] + + def showAnns(self, anns): + """ + Display the specified annotations. + :param anns (array of object): annotations to display + :return: None + """ + if len(anns) == 0: + return 0 + if 'segmentation' in anns[0]: + datasetType = 'instances' + elif 'caption' in anns[0]: + datasetType = 'captions' + if datasetType == 'instances': + ax = plt.gca() + polygons = [] + color = [] + for ann in anns: + c = np.random.random((1, 3)).tolist()[0] + if type(ann['segmentation']) == list: + # polygon + for seg in ann['segmentation']: + poly = np.array(seg).reshape((len(seg)/2, 2)) + polygons.append(Polygon(poly, True,alpha=0.4)) + color.append(c) + else: + # mask + t = self.imgs[ann['image_id']] + if type(ann['segmentation']['counts']) == list: + rle = mask.frPyObjects([ann['segmentation']], t['height'], t['width']) + else: + rle = [ann['segmentation']] + m = mask.decode(rle) + img = np.ones( (m.shape[0], m.shape[1], 3) ) + if ann['iscrowd'] == 1: + color_mask = np.array([2.0,166.0,101.0])/255 + if ann['iscrowd'] == 0: + color_mask = np.random.random((1, 3)).tolist()[0] + for i in range(3): + img[:,:,i] = color_mask[i] + ax.imshow(np.dstack( (img, m*0.5) )) + p = PatchCollection(polygons, facecolors=color, edgecolors=(0,0,0,1), linewidths=3, alpha=0.4) + ax.add_collection(p) + elif datasetType == 'captions': + for ann in anns: + print ann['caption'] + + def loadRes(self, resFile): + """ + Load result file and return a result api object. + :param resFile (str) : file name of result file + :return: res (obj) : result api object + """ + res = COCO() + res.dataset['images'] = [img for img in self.dataset['images']] + # res.dataset['info'] = copy.deepcopy(self.dataset['info']) + # res.dataset['licenses'] = copy.deepcopy(self.dataset['licenses']) + + print 'Loading and preparing results... ' + tic = time.time() + anns = json.load(open(resFile)) + assert type(anns) == list, 'results in not an array of objects' + annsImgIds = [ann['image_id'] for ann in anns] + assert set(annsImgIds) == (set(annsImgIds) & set(self.getImgIds())), \ + 'Results do not correspond to current coco set' + if 'caption' in anns[0]: + imgIds = set([img['id'] for img in res.dataset['images']]) & set([ann['image_id'] for ann in anns]) + res.dataset['images'] = [img for img in res.dataset['images'] if img['id'] in imgIds] + for id, ann in enumerate(anns): + ann['id'] = id+1 + elif 'bbox' in anns[0] and not anns[0]['bbox'] == []: + res.dataset['categories'] = copy.deepcopy(self.dataset['categories']) + for id, ann in enumerate(anns): + bb = ann['bbox'] + x1, x2, y1, y2 = [bb[0], bb[0]+bb[2], bb[1], bb[1]+bb[3]] + if not 'segmentation' in ann: + ann['segmentation'] = [[x1, y1, x1, y2, x2, y2, x2, y1]] + ann['area'] = bb[2]*bb[3] + ann['id'] = id+1 + ann['iscrowd'] = 0 + elif 'segmentation' in anns[0]: + res.dataset['categories'] = copy.deepcopy(self.dataset['categories']) + for id, ann in enumerate(anns): + # now only support compressed RLE format as segmentation results + ann['area'] = mask.area([ann['segmentation']])[0] + if not 'bbox' in ann: + ann['bbox'] = mask.toBbox([ann['segmentation']])[0] + ann['id'] = id+1 + ann['iscrowd'] = 0 + print 'DONE (t=%0.2fs)'%(time.time()- tic) + + res.dataset['annotations'] = anns + res.createIndex() + return res + + def download( self, tarDir = None, imgIds = [] ): + ''' + Download COCO images from mscoco.org server. + :param tarDir (str): COCO results directory name + imgIds (list): images to be downloaded + :return: + ''' + if tarDir is None: + print 'Please specify target directory' + return -1 + if len(imgIds) == 0: + imgs = self.imgs.values() + else: + imgs = self.loadImgs(imgIds) + N = len(imgs) + if not os.path.exists(tarDir): + os.makedirs(tarDir) + for i, img in enumerate(imgs): + tic = time.time() + fname = os.path.join(tarDir, img['file_name']) + if not os.path.exists(fname): + urllib.urlretrieve(img['coco_url'], fname) + print 'downloaded %d/%d images (t=%.1fs)'%(i, N, time.time()- tic) diff --git a/examples/rfcn/lib/pycocotools/cocoeval.py b/examples/rfcn/lib/pycocotools/cocoeval.py new file mode 100644 index 000000000..f389eb0f2 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/cocoeval.py @@ -0,0 +1,444 @@ +__author__ = 'tsungyi' + +import numpy as np +import datetime +import time +from collections import defaultdict +import mask +import copy + +class COCOeval: + # Interface for evaluating detection on the Microsoft COCO dataset. + # + # The usage for CocoEval is as follows: + # cocoGt=..., cocoDt=... # load dataset and results + # E = CocoEval(cocoGt,cocoDt); # initialize CocoEval object + # E.params.recThrs = ...; # set parameters as desired + # E.evaluate(); # run per image evaluation + # E.accumulate(); # accumulate per image results + # E.summarize(); # display summary metrics of results + # For example usage see evalDemo.m and http://mscoco.org/. + # + # The evaluation parameters are as follows (defaults in brackets): + # imgIds - [all] N img ids to use for evaluation + # catIds - [all] K cat ids to use for evaluation + # iouThrs - [.5:.05:.95] T=10 IoU thresholds for evaluation + # recThrs - [0:.01:1] R=101 recall thresholds for evaluation + # areaRng - [...] A=4 object area ranges for evaluation + # maxDets - [1 10 100] M=3 thresholds on max detections per image + # useSegm - [1] if true evaluate against ground-truth segments + # useCats - [1] if true use category labels for evaluation # Note: if useSegm=0 the evaluation is run on bounding boxes. + # Note: if useCats=0 category labels are ignored as in proposal scoring. + # Note: multiple areaRngs [Ax2] and maxDets [Mx1] can be specified. + # + # evaluate(): evaluates detections on every image and every category and + # concats the results into the "evalImgs" with fields: + # dtIds - [1xD] id for each of the D detections (dt) + # gtIds - [1xG] id for each of the G ground truths (gt) + # dtMatches - [TxD] matching gt id at each IoU or 0 + # gtMatches - [TxG] matching dt id at each IoU or 0 + # dtScores - [1xD] confidence of each dt + # gtIgnore - [1xG] ignore flag for each gt + # dtIgnore - [TxD] ignore flag for each dt at each IoU + # + # accumulate(): accumulates the per-image, per-category evaluation + # results in "evalImgs" into the dictionary "eval" with fields: + # params - parameters used for evaluation + # date - date evaluation was performed + # counts - [T,R,K,A,M] parameter dimensions (see above) + # precision - [TxRxKxAxM] precision for every evaluation setting + # recall - [TxKxAxM] max recall for every evaluation setting + # Note: precision and recall==-1 for settings with no gt objects. + # + # See also coco, mask, pycocoDemo, pycocoEvalDemo + # + # Microsoft COCO Toolbox. version 2.0 + # Data, paper, and tutorials available at: http://mscoco.org/ + # Code written by Piotr Dollar and Tsung-Yi Lin, 2015. + # Licensed under the Simplified BSD License [see coco/license.txt] + def __init__(self, cocoGt=None, cocoDt=None): + ''' + Initialize CocoEval using coco APIs for gt and dt + :param cocoGt: coco object with ground truth annotations + :param cocoDt: coco object with detection results + :return: None + ''' + self.cocoGt = cocoGt # ground truth COCO API + self.cocoDt = cocoDt # detections COCO API + self.params = {} # evaluation parameters + self.evalImgs = defaultdict(list) # per-image per-category evaluation results [KxAxI] elements + self.eval = {} # accumulated evaluation results + self._gts = defaultdict(list) # gt for evaluation + self._dts = defaultdict(list) # dt for evaluation + self.params = Params() # parameters + self._paramsEval = {} # parameters for evaluation + self.stats = [] # result summarization + self.ious = {} # ious between all gts and dts + if not cocoGt is None: + self.params.imgIds = sorted(cocoGt.getImgIds()) + self.params.catIds = sorted(cocoGt.getCatIds()) + + + def _prepare(self): + ''' + Prepare ._gts and ._dts for evaluation based on params + :return: None + ''' + # + def _toMask(objs, coco): + # modify segmentation by reference + for obj in objs: + t = coco.imgs[obj['image_id']] + if type(obj['segmentation']) == list: + if type(obj['segmentation'][0]) == dict: + print 'debug' + obj['segmentation'] = mask.frPyObjects(obj['segmentation'],t['height'],t['width']) + if len(obj['segmentation']) == 1: + obj['segmentation'] = obj['segmentation'][0] + else: + # an object can have multiple polygon regions + # merge them into one RLE mask + obj['segmentation'] = mask.merge(obj['segmentation']) + elif type(obj['segmentation']) == dict and type(obj['segmentation']['counts']) == list: + obj['segmentation'] = mask.frPyObjects([obj['segmentation']],t['height'],t['width'])[0] + elif type(obj['segmentation']) == dict and \ + type(obj['segmentation']['counts'] == unicode or type(obj['segmentation']['counts']) == str): + pass + else: + raise Exception('segmentation format not supported.') + p = self.params + if p.useCats: + gts=self.cocoGt.loadAnns(self.cocoGt.getAnnIds(imgIds=p.imgIds, catIds=p.catIds)) + dts=self.cocoDt.loadAnns(self.cocoDt.getAnnIds(imgIds=p.imgIds, catIds=p.catIds)) + else: + gts=self.cocoGt.loadAnns(self.cocoGt.getAnnIds(imgIds=p.imgIds)) + dts=self.cocoDt.loadAnns(self.cocoDt.getAnnIds(imgIds=p.imgIds)) + + if p.useSegm: + _toMask(gts, self.cocoGt) + _toMask(dts, self.cocoDt) + self._gts = defaultdict(list) # gt for evaluation + self._dts = defaultdict(list) # dt for evaluation + for gt in gts: + self._gts[gt['image_id'], gt['category_id']].append(gt) + for dt in dts: + self._dts[dt['image_id'], dt['category_id']].append(dt) + self.evalImgs = defaultdict(list) # per-image per-category evaluation results + self.eval = {} # accumulated evaluation results + + def evaluate(self): + ''' + Run per image evaluation on given images and store results (a list of dict) in self.evalImgs + :return: None + ''' + tic = time.time() + print 'Running per image evaluation... ' + p = self.params + p.imgIds = list(np.unique(p.imgIds)) + if p.useCats: + p.catIds = list(np.unique(p.catIds)) + p.maxDets = sorted(p.maxDets) + self.params=p + + self._prepare() + # loop through images, area range, max detection number + catIds = p.catIds if p.useCats else [-1] + + computeIoU = self.computeIoU + self.ious = {(imgId, catId): computeIoU(imgId, catId) \ + for imgId in p.imgIds + for catId in catIds} + + evaluateImg = self.evaluateImg + maxDet = p.maxDets[-1] + self.evalImgs = [evaluateImg(imgId, catId, areaRng, maxDet) + for catId in catIds + for areaRng in p.areaRng + for imgId in p.imgIds + ] + self._paramsEval = copy.deepcopy(self.params) + toc = time.time() + print 'DONE (t=%0.2fs).'%(toc-tic) + + def computeIoU(self, imgId, catId): + p = self.params + if p.useCats: + gt = self._gts[imgId,catId] + dt = self._dts[imgId,catId] + else: + gt = [_ for cId in p.catIds for _ in self._gts[imgId,cId]] + dt = [_ for cId in p.catIds for _ in self._dts[imgId,cId]] + if len(gt) == 0 and len(dt) ==0: + return [] + dt = sorted(dt, key=lambda x: -x['score']) + if len(dt) > p.maxDets[-1]: + dt=dt[0:p.maxDets[-1]] + + if p.useSegm: + g = [g['segmentation'] for g in gt] + d = [d['segmentation'] for d in dt] + else: + g = [g['bbox'] for g in gt] + d = [d['bbox'] for d in dt] + + # compute iou between each dt and gt region + iscrowd = [int(o['iscrowd']) for o in gt] + ious = mask.iou(d,g,iscrowd) + return ious + + def evaluateImg(self, imgId, catId, aRng, maxDet): + ''' + perform evaluation for single category and image + :return: dict (single image results) + ''' + # + p = self.params + if p.useCats: + gt = self._gts[imgId,catId] + dt = self._dts[imgId,catId] + else: + gt = [_ for cId in p.catIds for _ in self._gts[imgId,cId]] + dt = [_ for cId in p.catIds for _ in self._dts[imgId,cId]] + if len(gt) == 0 and len(dt) ==0: + return None + + for g in gt: + if 'ignore' not in g: + g['ignore'] = 0 + if g['iscrowd'] == 1 or g['ignore'] or (g['area']aRng[1]): + g['_ignore'] = 1 + else: + g['_ignore'] = 0 + + # sort dt highest score first, sort gt ignore last + # gt = sorted(gt, key=lambda x: x['_ignore']) + gtind = [ind for (ind, g) in sorted(enumerate(gt), key=lambda (ind, g): g['_ignore']) ] + + gt = [gt[ind] for ind in gtind] + dt = sorted(dt, key=lambda x: -x['score'])[0:maxDet] + iscrowd = [int(o['iscrowd']) for o in gt] + # load computed ious + N_iou = len(self.ious[imgId, catId]) + ious = self.ious[imgId, catId][0:maxDet, np.array(gtind)] if N_iou >0 else self.ious[imgId, catId] + + T = len(p.iouThrs) + G = len(gt) + D = len(dt) + gtm = np.zeros((T,G)) + dtm = np.zeros((T,D)) + gtIg = np.array([g['_ignore'] for g in gt]) + dtIg = np.zeros((T,D)) + if not len(ious)==0: + for tind, t in enumerate(p.iouThrs): + for dind, d in enumerate(dt): + # information about best match so far (m=-1 -> unmatched) + iou = min([t,1-1e-10]) + m = -1 + for gind, g in enumerate(gt): + # if this gt already matched, and not a crowd, continue + if gtm[tind,gind]>0 and not iscrowd[gind]: + continue + # if dt matched to reg gt, and on ignore gt, stop + if m>-1 and gtIg[m]==0 and gtIg[gind]==1: + break + # continue to next gt unless better match made + if ious[dind,gind] < iou: + continue + # match successful and best so far, store appropriately + iou=ious[dind,gind] + m=gind + # if match made store id of match for both dt and gt + if m ==-1: + continue + dtIg[tind,dind] = gtIg[m] + dtm[tind,dind] = gt[m]['id'] + gtm[tind,m] = d['id'] + # set unmatched detections outside of area range to ignore + a = np.array([d['area']aRng[1] for d in dt]).reshape((1, len(dt))) + dtIg = np.logical_or(dtIg, np.logical_and(dtm==0, np.repeat(a,T,0))) + # store results for given image and category + return { + 'image_id': imgId, + 'category_id': catId, + 'aRng': aRng, + 'maxDet': maxDet, + 'dtIds': [d['id'] for d in dt], + 'gtIds': [g['id'] for g in gt], + 'dtMatches': dtm, + 'gtMatches': gtm, + 'dtScores': [d['score'] for d in dt], + 'gtIgnore': gtIg, + 'dtIgnore': dtIg, + } + + def accumulate(self, p = None): + ''' + Accumulate per image evaluation results and store the result in self.eval + :param p: input params for evaluation + :return: None + ''' + print 'Accumulating evaluation results... ' + tic = time.time() + if not self.evalImgs: + print 'Please run evaluate() first' + # allows input customized parameters + if p is None: + p = self.params + p.catIds = p.catIds if p.useCats == 1 else [-1] + T = len(p.iouThrs) + R = len(p.recThrs) + K = len(p.catIds) if p.useCats else 1 + A = len(p.areaRng) + M = len(p.maxDets) + precision = -np.ones((T,R,K,A,M)) # -1 for the precision of absent categories + recall = -np.ones((T,K,A,M)) + + # create dictionary for future indexing + _pe = self._paramsEval + catIds = _pe.catIds if _pe.useCats else [-1] + setK = set(catIds) + setA = set(map(tuple, _pe.areaRng)) + setM = set(_pe.maxDets) + setI = set(_pe.imgIds) + # get inds to evaluate + k_list = [n for n, k in enumerate(p.catIds) if k in setK] + m_list = [m for n, m in enumerate(p.maxDets) if m in setM] + a_list = [n for n, a in enumerate(map(lambda x: tuple(x), p.areaRng)) if a in setA] + i_list = [n for n, i in enumerate(p.imgIds) if i in setI] + # K0 = len(_pe.catIds) + I0 = len(_pe.imgIds) + A0 = len(_pe.areaRng) + # retrieve E at each category, area range, and max number of detections + for k, k0 in enumerate(k_list): + Nk = k0*A0*I0 + for a, a0 in enumerate(a_list): + Na = a0*I0 + for m, maxDet in enumerate(m_list): + E = [self.evalImgs[Nk+Na+i] for i in i_list] + E = filter(None, E) + if len(E) == 0: + continue + dtScores = np.concatenate([e['dtScores'][0:maxDet] for e in E]) + + # different sorting method generates slightly different results. + # mergesort is used to be consistent as Matlab implementation. + inds = np.argsort(-dtScores, kind='mergesort') + + dtm = np.concatenate([e['dtMatches'][:,0:maxDet] for e in E], axis=1)[:,inds] + dtIg = np.concatenate([e['dtIgnore'][:,0:maxDet] for e in E], axis=1)[:,inds] + gtIg = np.concatenate([e['gtIgnore'] for e in E]) + npig = len([ig for ig in gtIg if ig == 0]) + if npig == 0: + continue + tps = np.logical_and( dtm, np.logical_not(dtIg) ) + fps = np.logical_and(np.logical_not(dtm), np.logical_not(dtIg) ) + + tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float) + fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float) + for t, (tp, fp) in enumerate(zip(tp_sum, fp_sum)): + tp = np.array(tp) + fp = np.array(fp) + nd = len(tp) + rc = tp / npig + pr = tp / (fp+tp+np.spacing(1)) + q = np.zeros((R,)) + + if nd: + recall[t,k,a,m] = rc[-1] + else: + recall[t,k,a,m] = 0 + + # numpy is slow without cython optimization for accessing elements + # use python array gets significant speed improvement + pr = pr.tolist(); q = q.tolist() + + for i in range(nd-1, 0, -1): + if pr[i] > pr[i-1]: + pr[i-1] = pr[i] + + inds = np.searchsorted(rc, p.recThrs) + try: + for ri, pi in enumerate(inds): + q[ri] = pr[pi] + except: + pass + precision[t,:,k,a,m] = np.array(q) + self.eval = { + 'params': p, + 'counts': [T, R, K, A, M], + 'date': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + 'precision': precision, + 'recall': recall, + } + toc = time.time() + print 'DONE (t=%0.2fs).'%( toc-tic ) + + def summarize(self): + ''' + Compute and display summary metrics for evaluation results. + Note this functin can *only* be applied on the default parameter setting + ''' + def _summarize( ap=1, iouThr=None, areaRng='all', maxDets=100 ): + p = self.params + iStr = ' {:<18} {} @[ IoU={:<9} | area={:>6} | maxDets={:>3} ] = {}' + titleStr = 'Average Precision' if ap == 1 else 'Average Recall' + typeStr = '(AP)' if ap==1 else '(AR)' + iouStr = '%0.2f:%0.2f'%(p.iouThrs[0], p.iouThrs[-1]) if iouThr is None else '%0.2f'%(iouThr) + areaStr = areaRng + maxDetsStr = '%d'%(maxDets) + + aind = [i for i, aRng in enumerate(['all', 'small', 'medium', 'large']) if aRng == areaRng] + mind = [i for i, mDet in enumerate([1, 10, 100]) if mDet == maxDets] + if ap == 1: + # dimension of precision: [TxRxKxAxM] + s = self.eval['precision'] + # IoU + if iouThr is not None: + t = np.where(iouThr == p.iouThrs)[0] + s = s[t] + # areaRng + s = s[:,:,:,aind,mind] + else: + # dimension of recall: [TxKxAxM] + s = self.eval['recall'] + s = s[:,:,aind,mind] + if len(s[s>-1])==0: + mean_s = -1 + else: + mean_s = np.mean(s[s>-1]) + print iStr.format(titleStr, typeStr, iouStr, areaStr, maxDetsStr, '%.3f'%(float(mean_s))) + return mean_s + + if not self.eval: + raise Exception('Please run accumulate() first') + self.stats = np.zeros((12,)) + self.stats[0] = _summarize(1) + self.stats[1] = _summarize(1,iouThr=.5) + self.stats[2] = _summarize(1,iouThr=.75) + self.stats[3] = _summarize(1,areaRng='small') + self.stats[4] = _summarize(1,areaRng='medium') + self.stats[5] = _summarize(1,areaRng='large') + self.stats[6] = _summarize(0,maxDets=1) + self.stats[7] = _summarize(0,maxDets=10) + self.stats[8] = _summarize(0,maxDets=100) + self.stats[9] = _summarize(0,areaRng='small') + self.stats[10] = _summarize(0,areaRng='medium') + self.stats[11] = _summarize(0,areaRng='large') + + def __str__(self): + self.summarize() + +class Params: + ''' + Params for coco evaluation api + ''' + def __init__(self): + self.imgIds = [] + self.catIds = [] + # np.arange causes trouble. the data point on arange is slightly larger than the true value + self.iouThrs = np.linspace(.5, 0.95, np.round((0.95-.5)/.05)+1, endpoint=True) + self.recThrs = np.linspace(.0, 1.00, np.round((1.00-.0)/.01)+1, endpoint=True) + self.maxDets = [1,10,100] + self.areaRng = [ [0**2,1e5**2], [0**2, 32**2], [32**2, 96**2], [96**2, 1e5**2] ] + self.useSegm = 0 + self.useCats = 1 \ No newline at end of file diff --git a/examples/rfcn/lib/pycocotools/license.txt b/examples/rfcn/lib/pycocotools/license.txt new file mode 100644 index 000000000..495c163a6 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/license.txt @@ -0,0 +1,26 @@ +Copyright (c) 2014, Piotr Dollar and Tsung-Yi Lin +All rights reserved. + +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. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. diff --git a/examples/rfcn/lib/pycocotools/mask.py b/examples/rfcn/lib/pycocotools/mask.py new file mode 100644 index 000000000..673254674 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/mask.py @@ -0,0 +1,82 @@ +__author__ = 'tsungyi' + +import pycocotools._mask as _mask + +# Interface for manipulating masks stored in RLE format. +# +# RLE is a simple yet efficient format for storing binary masks. RLE +# first divides a vector (or vectorized image) into a series of piecewise +# constant regions and then for each piece simply stores the length of +# that piece. For example, given M=[0 0 1 1 1 0 1] the RLE counts would +# be [2 3 1 1], or for M=[1 1 1 1 1 1 0] the counts would be [0 6 1] +# (note that the odd counts are always the numbers of zeros). Instead of +# storing the counts directly, additional compression is achieved with a +# variable bitrate representation based on a common scheme called LEB128. +# +# Compression is greatest given large piecewise constant regions. +# Specifically, the size of the RLE is proportional to the number of +# *boundaries* in M (or for an image the number of boundaries in the y +# direction). Assuming fairly simple shapes, the RLE representation is +# O(sqrt(n)) where n is number of pixels in the object. Hence space usage +# is substantially lower, especially for large simple objects (large n). +# +# Many common operations on masks can be computed directly using the RLE +# (without need for decoding). This includes computations such as area, +# union, intersection, etc. All of these operations are linear in the +# size of the RLE, in other words they are O(sqrt(n)) where n is the area +# of the object. Computing these operations on the original mask is O(n). +# Thus, using the RLE can result in substantial computational savings. +# +# The following API functions are defined: +# encode - Encode binary masks using RLE. +# decode - Decode binary masks encoded via RLE. +# merge - Compute union or intersection of encoded masks. +# iou - Compute intersection over union between masks. +# area - Compute area of encoded masks. +# toBbox - Get bounding boxes surrounding encoded masks. +# frPyObjects - Convert polygon, bbox, and uncompressed RLE to encoded RLE mask. +# +# Usage: +# Rs = encode( masks ) +# masks = decode( Rs ) +# R = merge( Rs, intersect=false ) +# o = iou( dt, gt, iscrowd ) +# a = area( Rs ) +# bbs = toBbox( Rs ) +# Rs = frPyObjects( [pyObjects], h, w ) +# +# In the API the following formats are used: +# Rs - [dict] Run-length encoding of binary masks +# R - dict Run-length encoding of binary mask +# masks - [hxwxn] Binary mask(s) (must have type np.ndarray(dtype=uint8) in column-major order) +# iscrowd - [nx1] list of np.ndarray. 1 indicates corresponding gt image has crowd region to ignore +# bbs - [nx4] Bounding box(es) stored as [x y w h] +# poly - Polygon stored as [[x1 y1 x2 y2...],[x1 y1 ...],...] (2D list) +# dt,gt - May be either bounding boxes or encoded masks +# Both poly and bbs are 0-indexed (bbox=[0 0 1 1] encloses first pixel). +# +# Finally, a note about the intersection over union (iou) computation. +# The standard iou of a ground truth (gt) and detected (dt) object is +# iou(gt,dt) = area(intersect(gt,dt)) / area(union(gt,dt)) +# For "crowd" regions, we use a modified criteria. If a gt object is +# marked as "iscrowd", we allow a dt to match any subregion of the gt. +# Choosing gt' in the crowd gt that best matches the dt can be done using +# gt'=intersect(dt,gt). Since by definition union(gt',dt)=dt, computing +# iou(gt,dt,iscrowd) = iou(gt',dt) = area(intersect(gt,dt)) / area(dt) +# For crowd gt regions we use this modified criteria above for the iou. +# +# To compile run "python setup.py build_ext --inplace" +# Please do not contact us for help with compiling. +# +# Microsoft COCO Toolbox. version 2.0 +# Data, paper, and tutorials available at: http://mscoco.org/ +# Code written by Piotr Dollar and Tsung-Yi Lin, 2015. +# Licensed under the Simplified BSD License [see coco/license.txt] + +encode = _mask.encode +decode = _mask.decode +iou = _mask.iou +merge = _mask.merge +area = _mask.area +toBbox = _mask.toBbox +frPyObjects = _mask.frPyObjects \ No newline at end of file diff --git a/examples/rfcn/lib/pycocotools/maskApi.c b/examples/rfcn/lib/pycocotools/maskApi.c new file mode 100644 index 000000000..2b2d89116 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/maskApi.c @@ -0,0 +1,208 @@ +/************************************************************************** +* Microsoft COCO Toolbox. version 2.0 +* Data, paper, and tutorials available at: http://mscoco.org/ +* Code written by Piotr Dollar and Tsung-Yi Lin, 2015. +* Licensed under the Simplified BSD License [see coco/license.txt] +**************************************************************************/ +#include "maskApi.h" +#include +#include + +uint umin( uint a, uint b ) { return (ab) ? a : b; } + +void rleInit( RLE *R, siz h, siz w, siz m, uint *cnts ) { + R->h=h; R->w=w; R->m=m; R->cnts=(m==0)?0:malloc(sizeof(uint)*m); + if(cnts) for(siz j=0; jcnts[j]=cnts[j]; +} + +void rleFree( RLE *R ) { + free(R->cnts); R->cnts=0; +} + +void rlesInit( RLE **R, siz n ) { + *R = (RLE*) malloc(sizeof(RLE)*n); + for(siz i=0; i0 ) { + c=umin(ca,cb); cc+=c; ct=0; + ca-=c; if(!ca && a0) { + crowd=iscrowd!=NULL && iscrowd[g]; + if(dt[d].h!=gt[g].h || dt[d].w!=gt[g].w) { o[g*m+d]=-1; continue; } + siz ka, kb, a, b; uint c, ca, cb, ct, i, u; bool va, vb; + ca=dt[d].cnts[0]; ka=dt[d].m; va=vb=0; + cb=gt[g].cnts[0]; kb=gt[g].m; a=b=1; i=u=0; ct=1; + while( ct>0 ) { + c=umin(ca,cb); if(va||vb) { u+=c; if(va&&vb) i+=c; } ct=0; + ca-=c; if(!ca && ad?1:c=dy && xs>xe) || (dxye); + if(flip) { t=xs; xs=xe; xe=t; t=ys; ys=ye; ye=t; } + s = dx>=dy ? (double)(ye-ys)/dx : (double)(xe-xs)/dy; + if(dx>=dy) for( int d=0; d<=dx; d++ ) { + t=flip?dx-d:d; u[m]=t+xs; v[m]=(int)(ys+s*t+.5); m++; + } else for( int d=0; d<=dy; d++ ) { + t=flip?dy-d:d; v[m]=t+ys; u[m]=(int)(xs+s*t+.5); m++; + } + } + // get points along y-boundary and downsample + free(x); free(y); k=m; m=0; double xd, yd; + x=malloc(sizeof(int)*k); y=malloc(sizeof(int)*k); + for( j=1; jw-1 ) continue; + yd=(double)(v[j]h) yd=h; yd=ceil(yd); + x[m]=(int) xd; y[m]=(int) yd; m++; + } + // compute rle encoding given y-boundary points + k=m; a=malloc(sizeof(uint)*(k+1)); + for( j=0; j0) b[m++]=a[j++]; else { + j++; if(jm, p=0; long x; bool more; + char *s=malloc(sizeof(char)*m*6); + for( i=0; icnts[i]; if(i>2) x-=(long) R->cnts[i-2]; more=1; + while( more ) { + char c=x & 0x1f; x >>= 5; more=(c & 0x10) ? x!=-1 : x!=0; + if(more) c |= 0x20; c+=48; s[p++]=c; + } + } + s[p]=0; return s; +} + +void rleFrString( RLE *R, char *s, siz h, siz w ) { + siz m=0, p=0, k; long x; bool more; uint *cnts; + while( s[m] ) m++; cnts=malloc(sizeof(uint)*m); m=0; + while( s[p] ) { + x=0; k=0; more=1; + while( more ) { + char c=s[p]-48; x |= (c & 0x1f) << 5*k; + more = c & 0x20; p++; k++; + if(!more && (c & 0x10)) x |= -1 << 5*k; + } + if(m>2) x+=(long) cnts[m-2]; cnts[m++]=(uint) x; + } + rleInit(R,h,w,m,cnts); free(cnts); +} diff --git a/examples/rfcn/lib/pycocotools/maskApi.h b/examples/rfcn/lib/pycocotools/maskApi.h new file mode 100644 index 000000000..ff16116c4 --- /dev/null +++ b/examples/rfcn/lib/pycocotools/maskApi.h @@ -0,0 +1,55 @@ +/************************************************************************** +* Microsoft COCO Toolbox. version 2.0 +* Data, paper, and tutorials available at: http://mscoco.org/ +* Code written by Piotr Dollar and Tsung-Yi Lin, 2015. +* Licensed under the Simplified BSD License [see coco/license.txt] +**************************************************************************/ +#pragma once +#include + +typedef unsigned int uint; +typedef unsigned long siz; +typedef unsigned char byte; +typedef double* BB; +typedef struct { siz h, w, m; uint *cnts; } RLE; + +// Initialize/destroy RLE. +void rleInit( RLE *R, siz h, siz w, siz m, uint *cnts ); +void rleFree( RLE *R ); + +// Initialize/destroy RLE array. +void rlesInit( RLE **R, siz n ); +void rlesFree( RLE **R, siz n ); + +// Encode binary masks using RLE. +void rleEncode( RLE *R, const byte *mask, siz h, siz w, siz n ); + +// Decode binary masks encoded via RLE. +void rleDecode( const RLE *R, byte *mask, siz n ); + +// Compute union or intersection of encoded masks. +void rleMerge( const RLE *R, RLE *M, siz n, bool intersect ); + +// Compute area of encoded masks. +void rleArea( const RLE *R, siz n, uint *a ); + +// Compute intersection over union between masks. +void rleIou( RLE *dt, RLE *gt, siz m, siz n, byte *iscrowd, double *o ); + +// Compute intersection over union between bounding boxes. +void bbIou( BB dt, BB gt, siz m, siz n, byte *iscrowd, double *o ); + +// Get bounding boxes surrounding encoded masks. +void rleToBbox( const RLE *R, BB bb, siz n ); + +// Convert bounding boxes to encoded masks. +void rleFrBbox( RLE *R, const BB bb, siz h, siz w, siz n ); + +// Convert polygon to encoded mask. +void rleFrPoly( RLE *R, const double *xy, siz k, siz h, siz w ); + +// Get compressed string representation of encoded mask. +char* rleToString( const RLE *R ); + +// Convert from compressed string representation of encoded mask. +void rleFrString( RLE *R, char *s, siz h, siz w ); diff --git a/examples/rfcn/lib/roi_data_layer/__init__.py b/examples/rfcn/lib/roi_data_layer/__init__.py new file mode 100644 index 000000000..7ba6a65c5 --- /dev/null +++ b/examples/rfcn/lib/roi_data_layer/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- diff --git a/examples/rfcn/lib/roi_data_layer/layer.py b/examples/rfcn/lib/roi_data_layer/layer.py new file mode 100644 index 000000000..ac591475c --- /dev/null +++ b/examples/rfcn/lib/roi_data_layer/layer.py @@ -0,0 +1,201 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""The data layer used during training to train a Fast R-CNN network. + +RoIDataLayer implements a Caffe Python layer. +""" + +import caffe +from fast_rcnn.config import cfg +from roi_data_layer.minibatch import get_minibatch +import numpy as np +import yaml +from multiprocessing import Process, Queue + +class RoIDataLayer(caffe.Layer): + """Fast R-CNN data layer used for training.""" + + def _shuffle_roidb_inds(self): + """Randomly permute the training roidb.""" + if cfg.TRAIN.ASPECT_GROUPING: + widths = np.array([r['width'] for r in self._roidb]) + heights = np.array([r['height'] for r in self._roidb]) + horz = (widths >= heights) + vert = np.logical_not(horz) + horz_inds = np.where(horz)[0] + vert_inds = np.where(vert)[0] + inds = np.hstack(( + np.random.permutation(horz_inds), + np.random.permutation(vert_inds))) + inds = np.reshape(inds, (-1, 2)) + row_perm = np.random.permutation(np.arange(inds.shape[0])) + inds = np.reshape(inds[row_perm, :], (-1,)) + self._perm = inds + else: + self._perm = np.random.permutation(np.arange(len(self._roidb))) + self._cur = 0 + + def _get_next_minibatch_inds(self): + """Return the roidb indices for the next minibatch.""" + if self._cur + cfg.TRAIN.IMS_PER_BATCH >= len(self._roidb): + self._shuffle_roidb_inds() + + db_inds = self._perm[self._cur:self._cur + cfg.TRAIN.IMS_PER_BATCH] + self._cur += cfg.TRAIN.IMS_PER_BATCH + return db_inds + + def _get_next_minibatch(self): + """Return the blobs to be used for the next minibatch. + + If cfg.TRAIN.USE_PREFETCH is True, then blobs will be computed in a + separate process and made available through self._blob_queue. + """ + if cfg.TRAIN.USE_PREFETCH: + return self._blob_queue.get() + else: + db_inds = self._get_next_minibatch_inds() + minibatch_db = [self._roidb[i] for i in db_inds] + return get_minibatch(minibatch_db, self._num_classes) + + def set_roidb(self, roidb): + """Set the roidb to be used by this layer during training.""" + self._roidb = roidb + self._shuffle_roidb_inds() + if cfg.TRAIN.USE_PREFETCH: + self._blob_queue = Queue(10) + self._prefetch_process = BlobFetcher(self._blob_queue, + self._roidb, + self._num_classes) + self._prefetch_process.start() + # Terminate the child process when the parent exists + def cleanup(): + print 'Terminating BlobFetcher' + self._prefetch_process.terminate() + self._prefetch_process.join() + import atexit + atexit.register(cleanup) + + def setup(self, bottom, top): + """Setup the RoIDataLayer.""" + + # parse the layer parameter string, which must be valid YAML + layer_params = yaml.load(self.param_str) + + self._num_classes = layer_params['num_classes'] + + self._name_to_top_map = {} + + # data blob: holds a batch of N images, each with 3 channels + idx = 0 + top[idx].reshape(cfg.TRAIN.IMS_PER_BATCH, 3, + max(cfg.TRAIN.SCALES), cfg.TRAIN.MAX_SIZE) + self._name_to_top_map['data'] = idx + idx += 1 + + if cfg.TRAIN.HAS_RPN: + top[idx].reshape(1, 3) + self._name_to_top_map['im_info'] = idx + idx += 1 + + top[idx].reshape(1, 4) + self._name_to_top_map['gt_boxes'] = idx + idx += 1 + else: # not using RPN + # rois blob: holds R regions of interest, each is a 5-tuple + # (n, x1, y1, x2, y2) specifying an image batch index n and a + # rectangle (x1, y1, x2, y2) + top[idx].reshape(1, 5, 1, 1) + self._name_to_top_map['rois'] = idx + idx += 1 + + # labels blob: R categorical labels in [0, ..., K] for K foreground + # classes plus background + top[idx].reshape(1, 1, 1, 1) + self._name_to_top_map['labels'] = idx + idx += 1 + + if cfg.TRAIN.BBOX_REG: + # bbox_targets blob: R bounding-box regression targets with 4 + # targets per class + num_reg_class = 2 if cfg.TRAIN.AGNOSTIC else self._num_classes + top[idx].reshape(1, num_reg_class * 4, 1, 1) + self._name_to_top_map['bbox_targets'] = idx + idx += 1 + + # bbox_inside_weights blob: At most 4 targets per roi are active; + # thisbinary vector sepcifies the subset of active targets + top[idx].reshape(1, num_reg_class * 4, 1, 1) + self._name_to_top_map['bbox_inside_weights'] = idx + idx += 1 + + top[idx].reshape(1, num_reg_class * 4, 1, 1) + self._name_to_top_map['bbox_outside_weights'] = idx + idx += 1 + + print 'RoiDataLayer: name_to_top:', self._name_to_top_map + assert len(top) == len(self._name_to_top_map) + + def forward(self, bottom, top): + """Get blobs and copy them into this layer's top blob vector.""" + blobs = self._get_next_minibatch() + + for blob_name, blob in blobs.iteritems(): + top_ind = self._name_to_top_map[blob_name] + shape = blob.shape + if len(shape) == 1: + blob = blob.reshape(blob.shape[0], 1, 1, 1) + if len(shape) == 2 and blob_name != 'im_info': + blob = blob.reshape(blob.shape[0], blob.shape[1], 1, 1) + top[top_ind].reshape(*(blob.shape)) + # Copy data into net's input blobs + top[top_ind].data[...] = blob.astype(np.float32, copy=False) + + def backward(self, top, propagate_down, bottom): + """This layer does not propagate gradients.""" + pass + + def reshape(self, bottom, top): + """Reshaping happens during the call to forward.""" + pass + +class BlobFetcher(Process): + """Experimental class for prefetching blobs in a separate process.""" + def __init__(self, queue, roidb, num_classes): + super(BlobFetcher, self).__init__() + self._queue = queue + self._roidb = roidb + self._num_classes = num_classes + self._perm = None + self._cur = 0 + self._shuffle_roidb_inds() + # fix the random seed for reproducibility + np.random.seed(cfg.RNG_SEED) + + def _shuffle_roidb_inds(self): + """Randomly permute the training roidb.""" + # TODO(rbg): remove duplicated code + self._perm = np.random.permutation(np.arange(len(self._roidb))) + self._cur = 0 + + def _get_next_minibatch_inds(self): + """Return the roidb indices for the next minibatch.""" + # TODO(rbg): remove duplicated code + if self._cur + cfg.TRAIN.IMS_PER_BATCH >= len(self._roidb): + self._shuffle_roidb_inds() + + db_inds = self._perm[self._cur:self._cur + cfg.TRAIN.IMS_PER_BATCH] + self._cur += cfg.TRAIN.IMS_PER_BATCH + return db_inds + + def run(self): + print 'BlobFetcher started' + while True: + db_inds = self._get_next_minibatch_inds() + minibatch_db = [self._roidb[i] for i in db_inds] + blobs = get_minibatch(minibatch_db, self._num_classes) + self._queue.put(blobs) diff --git a/examples/rfcn/lib/roi_data_layer/minibatch.py b/examples/rfcn/lib/roi_data_layer/minibatch.py new file mode 100644 index 000000000..a823547ed --- /dev/null +++ b/examples/rfcn/lib/roi_data_layer/minibatch.py @@ -0,0 +1,219 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Compute minibatch blobs for training a Fast R-CNN network.""" + +import numpy as np +import numpy.random as npr +import cv2 +import cPickle +import gzip +from fast_rcnn.config import cfg +from utils.blob import prep_im_for_blob, im_list_to_blob + +def get_minibatch(roidb, num_classes): + """Given a roidb, construct a minibatch sampled from it.""" + num_images = len(roidb) + num_reg_class = 2 if cfg.TRAIN.AGNOSTIC else num_classes + # Sample random scales to use for each image in this batch + random_scale_inds = npr.randint(0, high=len(cfg.TRAIN.SCALES), + size=num_images) + assert(cfg.TRAIN.BATCH_SIZE % num_images == 0) or (cfg.TRAIN.BATCH_SIZE == -1), \ + 'num_images ({}) must divide BATCH_SIZE ({})'. \ + format(num_images, cfg.TRAIN.BATCH_SIZE) + rois_per_image = np.inf if cfg.TRAIN.BATCH_SIZE == -1 else cfg.TRAIN.BATCH_SIZE / num_images + fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image) + + # Get the input image blob, formatted for caffe + im_blob, im_scales = _get_image_blob(roidb, random_scale_inds) + + blobs = {'data': im_blob} + + if cfg.TRAIN.HAS_RPN: + assert len(im_scales) == 1, "Single batch only" + assert len(roidb) == 1, "Single batch only" + # gt boxes: (x1, y1, x2, y2, cls) + gt_inds = np.where(roidb[0]['gt_classes'] != 0)[0] + gt_boxes = np.empty((len(gt_inds), 5), dtype=np.float32) + gt_boxes[:, 0:4] = roidb[0]['boxes'][gt_inds, :] * im_scales[0] + gt_boxes[:, 4] = roidb[0]['gt_classes'][gt_inds] + blobs['gt_boxes'] = gt_boxes + blobs['im_info'] = np.array( + [[im_blob.shape[2], im_blob.shape[3], im_scales[0]]], + dtype=np.float32) + else: # not using RPN + # Now, build the region of interest and label blobs + rois_blob = np.zeros((0, 5), dtype=np.float32) + labels_blob = np.zeros((0), dtype=np.float32) + bbox_targets_blob = np.zeros((0, 4 * num_reg_class), dtype=np.float32) + bbox_inside_blob = np.zeros(bbox_targets_blob.shape, dtype=np.float32) + # all_overlaps = [] + for im_i in xrange(num_images): + labels, overlaps, im_rois, bbox_targets, bbox_inside_weights \ + = _sample_rois(roidb[im_i], fg_rois_per_image, rois_per_image, + num_classes) + + # Add to RoIs blob + rois = _project_im_rois(im_rois, im_scales[im_i]) + batch_ind = im_i * np.ones((rois.shape[0], 1)) + rois_blob_this_image = np.hstack((batch_ind, rois)) + rois_blob = np.vstack((rois_blob, rois_blob_this_image)) + + # Add to labels, bbox targets, and bbox loss blobs + labels_blob = np.hstack((labels_blob, labels)) + bbox_targets_blob = np.vstack((bbox_targets_blob, bbox_targets)) + bbox_inside_blob = np.vstack((bbox_inside_blob, bbox_inside_weights)) + # all_overlaps = np.hstack((all_overlaps, overlaps)) + + # For debug visualizations + # _vis_minibatch(im_blob, rois_blob, labels_blob, all_overlaps) + + blobs['rois'] = rois_blob + blobs['labels'] = labels_blob + + if cfg.TRAIN.BBOX_REG: + blobs['bbox_targets'] = bbox_targets_blob + blobs['bbox_inside_weights'] = bbox_inside_blob + blobs['bbox_outside_weights'] = \ + np.array(bbox_inside_blob > 0).astype(np.float32) + + return blobs + +def _sample_rois(roidb, fg_rois_per_image, rois_per_image, num_classes): + """Generate a random sample of RoIs comprising foreground and background + examples. + """ + # label = class RoI has max overlap with + labels = roidb['max_classes'] + overlaps = roidb['max_overlaps'] + rois = roidb['boxes'] + + # Select foreground RoIs as those with >= FG_THRESH overlap + fg_inds = np.where(overlaps >= cfg.TRAIN.FG_THRESH)[0] + # Guard against the case when an image has fewer than fg_rois_per_image + # foreground RoIs + fg_rois_per_this_image = np.minimum(fg_rois_per_image, fg_inds.size) + # Sample foreground regions without replacement + if fg_inds.size > 0: + fg_inds = npr.choice( + fg_inds, size=fg_rois_per_this_image, replace=False) + + # Select background RoIs as those within [BG_THRESH_LO, BG_THRESH_HI) + bg_inds = np.where((overlaps < cfg.TRAIN.BG_THRESH_HI) & + (overlaps >= cfg.TRAIN.BG_THRESH_LO))[0] + # Compute number of background RoIs to take from this image (guarding + # against there being fewer than desired) + bg_rois_per_this_image = rois_per_image - fg_rois_per_this_image + bg_rois_per_this_image = np.minimum(bg_rois_per_this_image, + bg_inds.size) + # Sample foreground regions without replacement + if bg_inds.size > 0: + bg_inds = npr.choice( + bg_inds, size=bg_rois_per_this_image, replace=False) + + # The indices that we're selecting (both fg and bg) + keep_inds = np.append(fg_inds, bg_inds) + # Select sampled values from various arrays: + labels = labels[keep_inds] + # Clamp labels for the background RoIs to 0 + labels[fg_rois_per_this_image:] = 0 + overlaps = overlaps[keep_inds] + rois = rois[keep_inds] + + bbox_targets, bbox_inside_weights = _get_bbox_regression_labels( + roidb['bbox_targets'][keep_inds, :], num_classes) + + return labels, overlaps, rois, bbox_targets, bbox_inside_weights + +def _get_image_blob(roidb, scale_inds): + """Builds an input blob from the images in the roidb at the specified + scales. + """ + num_images = len(roidb) + processed_ims = [] + im_scales = [] + for i in xrange(num_images): + im = None + if cfg.TRAIN.FORMAT == "pickle": + with gzip(roidb[i][image], 'rb') as f: + im = cPickle.load(f) + else: + im = cv2.imread(roidb[i]['image']) + # print roidb[i]['image'] + if roidb[i]['flipped']: + im = im[:, ::-1, :] + target_size = cfg.TRAIN.SCALES[scale_inds[i]] + im, im_scale = prep_im_for_blob(im, cfg.PIXEL_MEANS, target_size, + cfg.TRAIN.MAX_SIZE) + im_scales.append(im_scale) + processed_ims.append(im) + + # Create a blob to hold the input images + blob = im_list_to_blob(processed_ims) + + return blob, im_scales + +def _project_im_rois(im_rois, im_scale_factor): + """Project image RoIs into the rescaled training image.""" + rois = im_rois * im_scale_factor + return rois + +def _get_bbox_regression_labels(bbox_target_data, num_classes): + """Bounding-box regression targets are stored in a compact form in the + roidb. + + This function expands those targets into the 4-of-4*K representation used + by the network (i.e. only one class has non-zero targets). The loss weights + are similarly expanded. + + Returns: + bbox_target_data (ndarray): N x 4K blob of regression targets + bbox_inside_weights (ndarray): N x 4K blob of loss weights + """ + clss = bbox_target_data[:, 0] + num_reg_class = 2 if cfg.TRAIN.AGNOSTIC else num_classes + bbox_targets = np.zeros((clss.size, 4 * num_reg_class), dtype=np.float32) + bbox_inside_weights = np.zeros(bbox_targets.shape, dtype=np.float32) + inds = np.where(clss > 0)[0] + + if cfg.TRAIN.AGNOSTIC: + for ind in inds: + cls = clss[ind] + start = 4 * (1 if cls > 0 else 0) + end = start + 4 + bbox_targets[ind, start:end] = bbox_target_data[ind, 1:] + bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS + else: + for ind in inds: + cls = clss[ind] + start = 4 * cls + end = start + 4 + bbox_targets[ind, start:end] = bbox_target_data[ind, 1:] + bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS + + return bbox_targets, bbox_inside_weights + +def _vis_minibatch(im_blob, rois_blob, labels_blob, overlaps): + """Visualize a mini-batch for debugging.""" + import matplotlib.pyplot as plt + for i in xrange(rois_blob.shape[0]): + rois = rois_blob[i, :] + im_ind = rois[0] + roi = rois[1:] + im = im_blob[im_ind, :, :, :].transpose((1, 2, 0)).copy() + im += cfg.PIXEL_MEANS + im = im[:, :, (2, 1, 0)] + im = im.astype(np.uint8) + cls = labels_blob[i] + plt.imshow(im) + print 'class: ', cls, ' overlap: ', overlaps[i] + plt.gca().add_patch( + plt.Rectangle((roi[0], roi[1]), roi[2] - roi[0], + roi[3] - roi[1], fill=False, + edgecolor='r', linewidth=3) + ) + plt.show() diff --git a/examples/rfcn/lib/roi_data_layer/roidb.py b/examples/rfcn/lib/roi_data_layer/roidb.py new file mode 100644 index 000000000..05db5b513 --- /dev/null +++ b/examples/rfcn/lib/roi_data_layer/roidb.py @@ -0,0 +1,135 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Transform a roidb into a trainable roidb by adding a bunch of metadata.""" + +import numpy as np +from fast_rcnn.config import cfg +from fast_rcnn.bbox_transform import bbox_transform +from utils.cython_bbox import bbox_overlaps +import PIL + +def prepare_roidb(imdb): + """Enrich the imdb's roidb by adding some derived quantities that + are useful for training. This function precomputes the maximum + overlap, taken over ground-truth boxes, between each ROI and + each ground-truth box. The class with maximum overlap is also + recorded. + """ + sizes = [PIL.Image.open(imdb.image_path_at(i)).size + for i in xrange(imdb.num_images)] + roidb = imdb.roidb + for i in xrange(len(imdb.image_index)): + roidb[i]['image'] = imdb.image_path_at(i) + roidb[i]['width'] = sizes[i][0] + roidb[i]['height'] = sizes[i][1] + # need gt_overlaps as a dense array for argmax + gt_overlaps = roidb[i]['gt_overlaps'].toarray() + # max overlap with gt over classes (columns) + max_overlaps = gt_overlaps.max(axis=1) + # gt class that had the max overlap + max_classes = gt_overlaps.argmax(axis=1) + roidb[i]['max_classes'] = max_classes + roidb[i]['max_overlaps'] = max_overlaps + # sanity checks + # max overlap of 0 => class should be zero (background) + zero_inds = np.where(max_overlaps == 0)[0] + assert all(max_classes[zero_inds] == 0) + # max overlap > 0 => class should not be zero (must be a fg class) + nonzero_inds = np.where(max_overlaps > 0)[0] + assert all(max_classes[nonzero_inds] != 0) + +def add_bbox_regression_targets(roidb): + """Add information needed to train bounding-box regressors.""" + assert len(roidb) > 0 + assert 'max_classes' in roidb[0], 'Did you call prepare_roidb first?' + + num_images = len(roidb) + # Infer number of classes from the number of columns in gt_overlaps + num_reg_classes = 2 if cfg.TRAIN.AGNOSTIC else roidb[0]['gt_overlaps'].shape[1] + for im_i in xrange(num_images): + rois = roidb[im_i]['boxes'] + max_overlaps = roidb[im_i]['max_overlaps'] + max_classes = roidb[im_i]['max_classes'] + roidb[im_i]['bbox_targets'] = \ + _compute_targets(rois, max_overlaps, max_classes) + + if cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED: + # Use fixed / precomputed "means" and "stds" instead of empirical values + means = np.tile( + np.array(cfg.TRAIN.BBOX_NORMALIZE_MEANS), (num_reg_classes, 1)) + stds = np.tile( + np.array(cfg.TRAIN.BBOX_NORMALIZE_STDS), (num_reg_classes, 1)) + else: + # Compute values needed for means and stds + # var(x) = E(x^2) - E(x)^2 + class_counts = np.zeros((num_reg_classes, 1)) + cfg.EPS + sums = np.zeros((num_reg_classes, 4)) + squared_sums = np.zeros((num_reg_classes, 4)) + for im_i in xrange(num_images): + targets = roidb[im_i]['bbox_targets'] + for cls in xrange(1, num_reg_classes): + cls_inds = np.where(targets[:, 0] > 0)[0] if cfg.TRAIN.AGNOSTIC \ + else np.where(targets[:, 0] == cls)[0] + if cls_inds.size > 0: + class_counts[cls] += cls_inds.size + sums[cls, :] += targets[cls_inds, 1:].sum(axis=0) + squared_sums[cls, :] += \ + (targets[cls_inds, 1:] ** 2).sum(axis=0) + + means = sums / class_counts + stds = np.sqrt(squared_sums / class_counts - means ** 2) + + print 'bbox target means:' + print means + print means[1:, :].mean(axis=0) # ignore bg class + print 'bbox target stdevs:' + print stds + print stds[1:, :].mean(axis=0) # ignore bg class + + # Normalize targets + if cfg.TRAIN.BBOX_NORMALIZE_TARGETS: + print "Normalizing targets" + for im_i in xrange(num_images): + targets = roidb[im_i]['bbox_targets'] + for cls in xrange(1, num_reg_classes): + cls_inds = np.where(targets[:, 0] > 0) if cfg.TRAIN.AGNOSTIC \ + else np.where(targets[:, 0] == cls)[0] + roidb[im_i]['bbox_targets'][cls_inds, 1:] -= means[cls, :] + roidb[im_i]['bbox_targets'][cls_inds, 1:] /= stds[cls, :] + else: + print "NOT normalizing targets" + + # These values will be needed for making predictions + # (the predicts will need to be unnormalized and uncentered) + return means.ravel(), stds.ravel() + +def _compute_targets(rois, overlaps, labels): + """Compute bounding-box regression targets for an image.""" + # Indices of ground-truth ROIs + gt_inds = np.where(overlaps == 1)[0] + if len(gt_inds) == 0: + # Bail if the image has no ground-truth ROIs + return np.zeros((rois.shape[0], 5), dtype=np.float32) + # Indices of examples for which we try to make predictions + ex_inds = np.where(overlaps >= cfg.TRAIN.BBOX_THRESH)[0] + + # Get IoU overlap between each ex ROI and gt ROI + ex_gt_overlaps = bbox_overlaps( + np.ascontiguousarray(rois[ex_inds, :], dtype=np.float), + np.ascontiguousarray(rois[gt_inds, :], dtype=np.float)) + + # Find which gt ROI each ex ROI has max overlap with: + # this will be the ex ROI's gt target + gt_assignment = ex_gt_overlaps.argmax(axis=1) + gt_rois = rois[gt_inds[gt_assignment], :] + ex_rois = rois[ex_inds, :] + + targets = np.zeros((rois.shape[0], 5), dtype=np.float32) + targets[ex_inds, 0] = labels[ex_inds] + targets[ex_inds, 1:] = bbox_transform(ex_rois, gt_rois) + return targets diff --git a/examples/rfcn/lib/rpn/README.md b/examples/rfcn/lib/rpn/README.md new file mode 100644 index 000000000..80abf48e2 --- /dev/null +++ b/examples/rfcn/lib/rpn/README.md @@ -0,0 +1,23 @@ +### `rpn` module overview + +##### `generate_anchors.py` + +Generates a regular grid of multi-scale, multi-aspect anchor boxes. + +##### `proposal_layer.py` + +Converts RPN outputs (per-anchor scores and bbox regression estimates) into object proposals. + +##### `anchor_target_layer.py` + +Generates training targets/labels for each anchor. Classification labels are 1 (object), 0 (not object) or -1 (ignore). +Bbox regression targets are specified when the classification label is > 0. + +##### `proposal_target_layer.py` + +Generates training targets/labels for each object proposal: classification labels 0 - K (bg or object class 1, ... , K) +and bbox regression targets in that case that the label is > 0. + +##### `generate.py` + +Generate object detection proposals from an imdb using an RPN. diff --git a/examples/rfcn/lib/rpn/__init__.py b/examples/rfcn/lib/rpn/__init__.py new file mode 100644 index 000000000..23b31b2da --- /dev/null +++ b/examples/rfcn/lib/rpn/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick and Sean Bell +# -------------------------------------------------------- diff --git a/examples/rfcn/lib/rpn/anchor_target_layer.py b/examples/rfcn/lib/rpn/anchor_target_layer.py new file mode 100644 index 000000000..48f24e6a3 --- /dev/null +++ b/examples/rfcn/lib/rpn/anchor_target_layer.py @@ -0,0 +1,288 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick and Sean Bell +# -------------------------------------------------------- + +import os +import caffe +import yaml +from fast_rcnn.config import cfg +import numpy as np +import numpy.random as npr +from generate_anchors import generate_anchors +from utils.cython_bbox import bbox_overlaps +from fast_rcnn.bbox_transform import bbox_transform + +DEBUG = False + +class AnchorTargetLayer(caffe.Layer): + """ + Assign anchors to ground-truth targets. Produces anchor classification + labels and bounding-box regression targets. + """ + + def setup(self, bottom, top): + layer_params = yaml.load(self.param_str) + anchor_scales = layer_params.get('scales', (8, 16, 32)) + self._anchors = generate_anchors(scales=np.array(anchor_scales)) + self._num_anchors = self._anchors.shape[0] + self._feat_stride = layer_params['feat_stride'] + + if DEBUG: + print 'anchors:' + print self._anchors + print 'anchor shapes:' + print np.hstack(( + self._anchors[:, 2::4] - self._anchors[:, 0::4], + self._anchors[:, 3::4] - self._anchors[:, 1::4], + )) + self._counts = cfg.EPS + self._sums = np.zeros((1, 4)) + self._squared_sums = np.zeros((1, 4)) + self._fg_sum = 0 + self._bg_sum = 0 + self._count = 0 + + # allow boxes to sit over the edge by a small amount + self._allowed_border = layer_params.get('allowed_border', 0) + + height, width = bottom[0].data.shape[-2:] + if DEBUG: + print 'AnchorTargetLayer: height', height, 'width', width + + A = self._num_anchors + # labels + top[0].reshape(1, 1, A * height, width) + # bbox_targets + top[1].reshape(1, A * 4, height, width) + # bbox_inside_weights + top[2].reshape(1, A * 4, height, width) + # bbox_outside_weights + top[3].reshape(1, A * 4, height, width) + + def forward(self, bottom, top): + # Algorithm: + # + # for each (H, W) location i + # generate 9 anchor boxes centered on cell i + # apply predicted bbox deltas at cell i to each of the 9 anchors + # filter out-of-image anchors + # measure GT overlap + + assert bottom[0].data.shape[0] == 1, \ + 'Only single item batches are supported' + + # map of shape (..., H, W) + height, width = bottom[0].data.shape[-2:] + # GT boxes (x1, y1, x2, y2, label) + gt_boxes = bottom[1].data + # im_info + im_info = bottom[2].data[0, :] + + if DEBUG: + print '' + print 'im_size: ({}, {})'.format(im_info[0], im_info[1]) + print 'scale: {}'.format(im_info[2]) + print 'height, width: ({}, {})'.format(height, width) + print 'rpn: gt_boxes.shape', gt_boxes.shape + print 'rpn: gt_boxes', gt_boxes + + # 1. Generate proposals from bbox deltas and shifted anchors + shift_x = np.arange(0, width) * self._feat_stride + shift_y = np.arange(0, height) * self._feat_stride + shift_x, shift_y = np.meshgrid(shift_x, shift_y) + shifts = np.vstack((shift_x.ravel(), shift_y.ravel(), + shift_x.ravel(), shift_y.ravel())).transpose() + # add A anchors (1, A, 4) to + # cell K shifts (K, 1, 4) to get + # shift anchors (K, A, 4) + # reshape to (K*A, 4) shifted anchors + A = self._num_anchors + K = shifts.shape[0] + all_anchors = (self._anchors.reshape((1, A, 4)) + + shifts.reshape((1, K, 4)).transpose((1, 0, 2))) + all_anchors = all_anchors.reshape((K * A, 4)) + total_anchors = int(K * A) + + # only keep anchors inside the image + inds_inside = np.where( + (all_anchors[:, 0] >= -self._allowed_border) & + (all_anchors[:, 1] >= -self._allowed_border) & + (all_anchors[:, 2] < im_info[1] + self._allowed_border) & # width + (all_anchors[:, 3] < im_info[0] + self._allowed_border) # height + )[0] + + if DEBUG: + print 'total_anchors', total_anchors + print 'inds_inside', len(inds_inside) + + # keep only inside anchors + anchors = all_anchors[inds_inside, :] + if DEBUG: + print 'anchors.shape', anchors.shape + + # label: 1 is positive, 0 is negative, -1 is dont care + labels = np.empty((len(inds_inside), ), dtype=np.float32) + labels.fill(-1) + + # overlaps between the anchors and the gt boxes + # overlaps (ex, gt) + gt_boxes = gt_boxes.reshape(gt_boxes.shape[0], gt_boxes.shape[1]) + overlaps = bbox_overlaps( + np.ascontiguousarray(anchors, dtype=np.float), + np.ascontiguousarray(gt_boxes, dtype=np.float)) + argmax_overlaps = overlaps.argmax(axis=1) + max_overlaps = overlaps[np.arange(len(inds_inside)), argmax_overlaps] + gt_argmax_overlaps = overlaps.argmax(axis=0) + gt_max_overlaps = overlaps[gt_argmax_overlaps, + np.arange(overlaps.shape[1])] + gt_argmax_overlaps = np.where(overlaps == gt_max_overlaps)[0] + + if not cfg.TRAIN.RPN_CLOBBER_POSITIVES: + # assign bg labels first so that positive labels can clobber them + labels[max_overlaps < cfg.TRAIN.RPN_NEGATIVE_OVERLAP] = 0 + + # fg label: for each gt, anchor with highest overlap + labels[gt_argmax_overlaps] = 1 + + # fg label: above threshold IOU + labels[max_overlaps >= cfg.TRAIN.RPN_POSITIVE_OVERLAP] = 1 + + if cfg.TRAIN.RPN_CLOBBER_POSITIVES: + # assign bg labels last so that negative labels can clobber positives + labels[max_overlaps < cfg.TRAIN.RPN_NEGATIVE_OVERLAP] = 0 + + # subsample positive labels if we have too many + num_fg = int(cfg.TRAIN.RPN_FG_FRACTION * cfg.TRAIN.RPN_BATCHSIZE) + fg_inds = np.where(labels == 1)[0] + if len(fg_inds) > num_fg: + disable_inds = npr.choice( + fg_inds, size=(len(fg_inds) - num_fg), replace=False) + labels[disable_inds] = -1 + + # subsample negative labels if we have too many + num_bg = cfg.TRAIN.RPN_BATCHSIZE - np.sum(labels == 1) + bg_inds = np.where(labels == 0)[0] + if len(bg_inds) > num_bg: + disable_inds = npr.choice( + bg_inds, size=(len(bg_inds) - num_bg), replace=False) + labels[disable_inds] = -1 + #print "was %s inds, disabling %s, now %s inds" % ( + #len(bg_inds), len(disable_inds), np.sum(labels == 0)) + + bbox_targets = np.zeros((len(inds_inside), 4), dtype=np.float32) + bbox_targets = _compute_targets(anchors, gt_boxes[argmax_overlaps, :]) + + bbox_inside_weights = np.zeros((len(inds_inside), 4), dtype=np.float32) + bbox_inside_weights[labels == 1, :] = np.array(cfg.TRAIN.RPN_BBOX_INSIDE_WEIGHTS) + + bbox_outside_weights = np.zeros((len(inds_inside), 4), dtype=np.float32) + if cfg.TRAIN.RPN_POSITIVE_WEIGHT < 0: + # uniform weighting of examples (given non-uniform sampling) + num_examples = np.sum(labels >= 0) + positive_weights = np.ones((1, 4)) * 1.0 / num_examples + negative_weights = np.ones((1, 4)) * 1.0 / num_examples + else: + assert ((cfg.TRAIN.RPN_POSITIVE_WEIGHT > 0) & + (cfg.TRAIN.RPN_POSITIVE_WEIGHT < 1)) + positive_weights = (cfg.TRAIN.RPN_POSITIVE_WEIGHT / + np.sum(labels == 1)) + negative_weights = ((1.0 - cfg.TRAIN.RPN_POSITIVE_WEIGHT) / + np.sum(labels == 0)) + bbox_outside_weights[labels == 1, :] = positive_weights + bbox_outside_weights[labels == 0, :] = negative_weights + + if DEBUG: + self._sums += bbox_targets[labels == 1, :].sum(axis=0) + self._squared_sums += (bbox_targets[labels == 1, :] ** 2).sum(axis=0) + self._counts += np.sum(labels == 1) + means = self._sums / self._counts + stds = np.sqrt(self._squared_sums / self._counts - means ** 2) + print 'means:' + print means + print 'stdevs:' + print stds + + # map up to original set of anchors + labels = _unmap(labels, total_anchors, inds_inside, fill=-1) + bbox_targets = _unmap(bbox_targets, total_anchors, inds_inside, fill=0) + bbox_inside_weights = _unmap(bbox_inside_weights, total_anchors, inds_inside, fill=0) + bbox_outside_weights = _unmap(bbox_outside_weights, total_anchors, inds_inside, fill=0) + + if DEBUG: + print 'rpn: max max_overlap', np.max(max_overlaps) + print 'rpn: num_positive', np.sum(labels == 1) + print 'rpn: num_negative', np.sum(labels == 0) + self._fg_sum += np.sum(labels == 1) + self._bg_sum += np.sum(labels == 0) + self._count += 1 + print 'rpn: num_positive avg', self._fg_sum / self._count + print 'rpn: num_negative avg', self._bg_sum / self._count + + # labels + labels = labels.reshape((1, height, width, A)).transpose(0, 3, 1, 2) + labels = labels.reshape((1, 1, A * height, width)) + top[0].reshape(*labels.shape) + top[0].data[...] = labels + + # bbox_targets + bbox_targets = bbox_targets \ + .reshape((1, height, width, A * 4)).transpose(0, 3, 1, 2) + top[1].reshape(*bbox_targets.shape) + top[1].data[...] = bbox_targets + + # bbox_inside_weights + bbox_inside_weights = bbox_inside_weights \ + .reshape((1, height, width, A * 4)).transpose(0, 3, 1, 2) + assert bbox_inside_weights.shape[2] == height + assert bbox_inside_weights.shape[3] == width + top[2].reshape(*bbox_inside_weights.shape) + top[2].data[...] = bbox_inside_weights + + # bbox_outside_weights + bbox_outside_weights = bbox_outside_weights \ + .reshape((1, height, width, A * 4)).transpose(0, 3, 1, 2) + assert bbox_outside_weights.shape[2] == height + assert bbox_outside_weights.shape[3] == width + top[3].reshape(*bbox_outside_weights.shape) + top[3].data[...] = bbox_outside_weights + + def backward(self, top, propagate_down, bottom): + """This layer does not propagate gradients.""" + pass + + def reshape(self, bottom, top): + """Reshaping happens during the call to forward.""" + pass + + +def _unmap(data, count, inds, fill=0): + """ Unmap a subset of item (data) back to the original set of items (of + size count) """ + if len(data.shape) == 1: + ret = np.empty((count, ), dtype=np.float32) + ret.fill(fill) + ret[inds] = data + else: + ret = np.empty((count, ) + data.shape[1:], dtype=np.float32) + ret.fill(fill) + ret[inds, :] = data + return ret + + +def _compute_targets(ex_rois, gt_rois): + """Compute bounding-box regression targets for an image.""" + + assert ex_rois.shape[0] == gt_rois.shape[0] + assert ex_rois.shape[1] == 4 + assert gt_rois.shape[1] == 5 + + targets = bbox_transform(ex_rois, gt_rois[:, :4]).astype(np.float32, copy=False) + if cfg.TRAIN.RPN_NORMALIZE_TARGETS: + assert cfg.TRAIN.RPN_NORMALIZE_MEANS is not None + assert cfg.TRAIN.RPN_NORMALIZE_STDS is not None + targets -= cfg.TRAIN.RPN_NORMALIZE_MEANS + targets /= cfg.TRAIN.RPN_NORMALIZE_STDS + return targets diff --git a/examples/rfcn/lib/rpn/generate.py b/examples/rfcn/lib/rpn/generate.py new file mode 100644 index 000000000..960d1985e --- /dev/null +++ b/examples/rfcn/lib/rpn/generate.py @@ -0,0 +1,225 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +from fast_rcnn.config import cfg +from fast_rcnn.train import filter_roidb +from utils.blob import im_list_to_blob +from utils.timer import Timer +from generate_anchors import generate_anchors +from utils.cython_bbox import bbox_overlaps +from fast_rcnn.bbox_transform import bbox_transform +import numpy as np +import cv2 + +def _vis_proposals(im, dets, thresh=0.5): + """Draw detected bounding boxes.""" + inds = np.where(dets[:, -1] >= thresh)[0] + if len(inds) == 0: + return + + class_name = 'obj' + im = im[:, :, (2, 1, 0)] + fig, ax = plt.subplots(figsize=(12, 12)) + ax.imshow(im, aspect='equal') + for i in inds: + bbox = dets[i, :4] + score = dets[i, -1] + + ax.add_patch( + plt.Rectangle((bbox[0], bbox[1]), + bbox[2] - bbox[0], + bbox[3] - bbox[1], fill=False, + edgecolor='red', linewidth=3.5) + ) + ax.text(bbox[0], bbox[1] - 2, + '{:s} {:.3f}'.format(class_name, score), + bbox=dict(facecolor='blue', alpha=0.5), + fontsize=14, color='white') + + ax.set_title(('{} detections with ' + 'p({} | box) >= {:.1f}').format(class_name, class_name, + thresh), + fontsize=14) + plt.axis('off') + plt.tight_layout() + plt.draw() + +def _get_image_blob(im): + """Converts an image into a network input. + + Arguments: + im (ndarray): a color image in BGR order + + Returns: + blob (ndarray): a data blob holding an image pyramid + im_scale_factors (list): list of image scales (relative to im) used + in the image pyramid + """ + im_orig = im.astype(np.float32, copy=True) + im_orig -= cfg.PIXEL_MEANS + + im_shape = im_orig.shape + im_size_min = np.min(im_shape[0:2]) + im_size_max = np.max(im_shape[0:2]) + + processed_ims = [] + + assert len(cfg.TEST.SCALES) == 1 + target_size = cfg.TEST.SCALES[0] + + im_scale = float(target_size) / float(im_size_min) + # Prevent the biggest axis from being more than MAX_SIZE + if np.round(im_scale * im_size_max) > cfg.TEST.MAX_SIZE: + im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max) + im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale, + interpolation=cv2.INTER_LINEAR) + im_info = np.hstack((im.shape[:2], im_scale))[np.newaxis, :] + processed_ims.append(im) + + # Create a blob to hold the input images + blob = im_list_to_blob(processed_ims) + + return blob, im_info + +def im_proposals(net, im): + """Generate RPN proposals on a single image.""" + blobs = {} + blobs['data'], blobs['im_info'] = _get_image_blob(im) + net.blobs['data'].reshape(*(blobs['data'].shape)) + net.blobs['im_info'].reshape(*(blobs['im_info'].shape)) + blobs_out = net.forward( + data=blobs['data'].astype(np.float32, copy=False), + im_info=blobs['im_info'].astype(np.float32, copy=False)) + + scale = blobs['im_info'][0, 2] + boxes = blobs_out['rois'][:, 1:].copy() / scale + scores = blobs_out['scores'].copy() + return boxes, scores + +def imdb_proposals(net, imdb): + """Generate RPN proposals on all images in an imdb.""" + + _t = Timer() + imdb_boxes = [[] for _ in xrange(imdb.num_images)] + for i in xrange(imdb.num_images): + im = None + if cfg.TRAIN.FORMAT == 'pickle': + with open(imdb.image_path_at(i), 'rb') as f: + im = cPickle.load(f) + else: + im = cv2.imread(imdb.image_path_at(i)) + + _t.tic() + imdb_boxes[i], scores = im_proposals(net, im) + _t.toc() + print 'im_proposals: {:d}/{:d} {:.3f}s' \ + .format(i + 1, imdb.num_images, _t.average_time) + if 0: + dets = np.hstack((imdb_boxes[i], scores)) + # from IPython import embed; embed() + _vis_proposals(im, dets[:3, :], thresh=0.9) + plt.show() + + return imdb_boxes + + +def imdb_rpn_compute_stats(net, imdb, anchor_scales=(8,16,32), + feature_stride=16): + raw_anchors = generate_anchors(scales=np.array(anchor_scales)) + print raw_anchors.shape + sums = 0 + squred_sums = 0 + counts = 0 + roidb = filter_roidb(imdb.roidb) + # Compute a map of input image size and output feature map blob + map_w = {} + map_h = {} + for i in xrange(50, cfg.TRAIN.MAX_SIZE + 10): + blobs = { + 'data': np.zeros((1, 3, i, i)), + 'im_info': np.asarray([[i, i, 1.0]]) + } + net.blobs['data'].reshape(*(blobs['data'].shape)) + net.blobs['im_info'].reshape(*(blobs['im_info'].shape)) + blobs_out = net.forward( + data=blobs['data'].astype(np.float32, copy=False), + im_info=blobs['im_info'].astype(np.float32, copy=False)) + height, width = net.blobs['rpn/output'].data.shape[-2:] + map_w[i] = width + map_h[i] = height + + for i in xrange(len(roidb)): + if not i % 5000: + print 'computing %d/%d' % (i, imdb.num_images) + im = None + if cfg.TRAIN.FORMAT == 'pickle': + with open(roidb[i]['image'], 'rb') as f: + im = cPickle.load(f) + else: + im = cv2.imread(roidb[i]['image']) + + im_data, im_info = _get_image_blob(im) + gt_boxes = roidb[i]['boxes'] + gt_boxes = gt_boxes * im_info[0, 2] + height = map_h[im_data.shape[2]] + width = map_w[im_data.shape[3]] + # 1. Generate proposals from bbox deltas and shifted anchors + shift_x = np.arange(0, width) * feature_stride + shift_y = np.arange(0, height) * feature_stride + shift_x, shift_y = np.meshgrid(shift_x, shift_y) + shifts = np.vstack((shift_x.ravel(), shift_y.ravel(), + shift_x.ravel(), shift_y.ravel())).transpose() + # add A anchors (1, A, 4) to + # cell K shifts (K, 1, 4) to get + # shift anchors (K, A, 4) + # reshape to (K*A, 4) shifted anchors + A = raw_anchors.shape[0] + K = shifts.shape[0] + all_anchors = (raw_anchors.reshape((1, A, 4)) + + shifts.reshape((1, K, 4)).transpose((1, 0, 2))) + all_anchors = all_anchors.reshape((K * A, 4)) + + # only keep anchors inside the image + inds_inside = np.where( + (all_anchors[:, 0] >= 0) & + (all_anchors[:, 1] >= 0) & + (all_anchors[:, 2] < im_info[0, 1]) & # width + (all_anchors[:, 3] < im_info[0, 0]) # height + )[0] + + # keep only inside anchors + anchors = all_anchors[inds_inside, :] + + overlaps = bbox_overlaps( + np.ascontiguousarray(anchors, dtype=np.float), + np.ascontiguousarray(gt_boxes, dtype=np.float)) + + # There are 2 types of bbox targets + # 1. anchor whose overlaps with gt is greater than RPN_POSITIVE_OVERLAP + argmax_overlaps = overlaps.argmax(axis=1) + max_overlaps = overlaps[np.arange(len(inds_inside)), argmax_overlaps] + fg_inds = np.where(max_overlaps >= cfg.TRAIN.RPN_POSITIVE_OVERLAP)[0] + # 2. anchors which best match certain gt + gt_argmax_overlaps = overlaps.argmax(axis=0) + gt_max_overlaps = overlaps[gt_argmax_overlaps, + np.arange(overlaps.shape[1])] + gt_argmax_overlaps = np.where(overlaps == gt_max_overlaps)[0] + fg_inds = np.unique(np.hstack((fg_inds, gt_argmax_overlaps))) + gt_rois = gt_boxes[argmax_overlaps, :] + + anchors = anchors[fg_inds, :] + gt_rois = gt_rois[fg_inds, :] + targets = bbox_transform(anchors, gt_rois[:, :4]).astype(np.float32, copy=False) + sums += targets.sum(axis=0) + squred_sums += (targets ** 2).sum(axis=0) + counts += targets.shape[0] + + means = sums / counts + stds = np.sqrt(squred_sums / counts - means ** 2) + print means + print stds + return means, stds diff --git a/examples/rfcn/lib/rpn/generate_anchors.py b/examples/rfcn/lib/rpn/generate_anchors.py new file mode 100644 index 000000000..1125a801f --- /dev/null +++ b/examples/rfcn/lib/rpn/generate_anchors.py @@ -0,0 +1,105 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick and Sean Bell +# -------------------------------------------------------- + +import numpy as np + +# Verify that we compute the same anchors as Shaoqing's matlab implementation: +# +# >> load output/rpn_cachedir/faster_rcnn_VOC2007_ZF_stage1_rpn/anchors.mat +# >> anchors +# +# anchors = +# +# -83 -39 100 56 +# -175 -87 192 104 +# -359 -183 376 200 +# -55 -55 72 72 +# -119 -119 136 136 +# -247 -247 264 264 +# -35 -79 52 96 +# -79 -167 96 184 +# -167 -343 184 360 + +#array([[ -83., -39., 100., 56.], +# [-175., -87., 192., 104.], +# [-359., -183., 376., 200.], +# [ -55., -55., 72., 72.], +# [-119., -119., 136., 136.], +# [-247., -247., 264., 264.], +# [ -35., -79., 52., 96.], +# [ -79., -167., 96., 184.], +# [-167., -343., 184., 360.]]) + +def generate_anchors(base_size=16, ratios=[0.5, 1, 2], + scales=2**np.arange(3, 6)): + """ + Generate anchor (reference) windows by enumerating aspect ratios X + scales wrt a reference (0, 0, 15, 15) window. + """ + + base_anchor = np.array([1, 1, base_size, base_size]) - 1 + ratio_anchors = _ratio_enum(base_anchor, ratios) + anchors = np.vstack([_scale_enum(ratio_anchors[i, :], scales) + for i in xrange(ratio_anchors.shape[0])]) + return anchors + +def _whctrs(anchor): + """ + Return width, height, x center, and y center for an anchor (window). + """ + + w = anchor[2] - anchor[0] + 1 + h = anchor[3] - anchor[1] + 1 + x_ctr = anchor[0] + 0.5 * (w - 1) + y_ctr = anchor[1] + 0.5 * (h - 1) + return w, h, x_ctr, y_ctr + +def _mkanchors(ws, hs, x_ctr, y_ctr): + """ + Given a vector of widths (ws) and heights (hs) around a center + (x_ctr, y_ctr), output a set of anchors (windows). + """ + + ws = ws[:, np.newaxis] + hs = hs[:, np.newaxis] + anchors = np.hstack((x_ctr - 0.5 * (ws - 1), + y_ctr - 0.5 * (hs - 1), + x_ctr + 0.5 * (ws - 1), + y_ctr + 0.5 * (hs - 1))) + return anchors + +def _ratio_enum(anchor, ratios): + """ + Enumerate a set of anchors for each aspect ratio wrt an anchor. + """ + + w, h, x_ctr, y_ctr = _whctrs(anchor) + size = w * h + size_ratios = size / ratios + ws = np.round(np.sqrt(size_ratios)) + hs = np.round(ws * ratios) + anchors = _mkanchors(ws, hs, x_ctr, y_ctr) + return anchors + +def _scale_enum(anchor, scales): + """ + Enumerate a set of anchors for each scale wrt an anchor. + """ + + w, h, x_ctr, y_ctr = _whctrs(anchor) + ws = w * scales + hs = h * scales + anchors = _mkanchors(ws, hs, x_ctr, y_ctr) + return anchors + +if __name__ == '__main__': + import time + t = time.time() + a = generate_anchors() + print time.time() - t + print a + from IPython import embed; embed() diff --git a/examples/rfcn/lib/rpn/proposal_layer.py b/examples/rfcn/lib/rpn/proposal_layer.py new file mode 100644 index 000000000..cb85579d5 --- /dev/null +++ b/examples/rfcn/lib/rpn/proposal_layer.py @@ -0,0 +1,180 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick and Sean Bell +# -------------------------------------------------------- + +import caffe +import numpy as np +import yaml +from fast_rcnn.config import cfg +from generate_anchors import generate_anchors +from fast_rcnn.bbox_transform import bbox_transform_inv, clip_boxes +from fast_rcnn.nms_wrapper import nms + +DEBUG = False + +class ProposalLayer(caffe.Layer): + """ + Outputs object detection proposals by applying estimated bounding-box + transformations to a set of regular boxes (called "anchors"). + """ + + def setup(self, bottom, top): + # parse the layer parameter string, which must be valid YAML + layer_params = yaml.load(self.param_str) + + self._feat_stride = layer_params['feat_stride'] + anchor_scales = layer_params.get('scales', (8, 16, 32)) + self._anchors = generate_anchors(scales=np.array(anchor_scales)) + self._num_anchors = self._anchors.shape[0] + + if DEBUG: + print 'feat_stride: {}'.format(self._feat_stride) + print 'anchors:' + print self._anchors + + # rois blob: holds R regions of interest, each is a 5-tuple + # (n, x1, y1, x2, y2) specifying an image batch index n and a + # rectangle (x1, y1, x2, y2) + top[0].reshape(1, 5) + + # scores blob: holds scores for R regions of interest + if len(top) > 1: + top[1].reshape(1, 1, 1, 1) + + def forward(self, bottom, top): + # Algorithm: + # + # for each (H, W) location i + # generate A anchor boxes centered on cell i + # apply predicted bbox deltas at cell i to each of the A anchors + # clip predicted boxes to image + # remove predicted boxes with either height or width < threshold + # sort all (proposal, score) pairs by score from highest to lowest + # take top pre_nms_topN proposals before NMS + # apply NMS with threshold 0.7 to remaining proposals + # take after_nms_topN proposals after NMS + # return the top proposals (-> RoIs top, scores top) + + assert bottom[0].data.shape[0] == 1, \ + 'Only single item batches are supported' + + #cfg_key = str(self.phase) # either 'TRAIN' or 'TEST' + cfg_key = str('TRAIN' if self.phase == 0 else 'TEST') + pre_nms_topN = cfg[cfg_key].RPN_PRE_NMS_TOP_N + post_nms_topN = cfg[cfg_key].RPN_POST_NMS_TOP_N + nms_thresh = cfg[cfg_key].RPN_NMS_THRESH + min_size = cfg[cfg_key].RPN_MIN_SIZE + + # the first set of _num_anchors channels are bg probs + # the second set are the fg probs, which we want + scores = bottom[0].data[:, self._num_anchors:, :, :] + bbox_deltas = bottom[1].data + im_info = bottom[2].data[0, :] + + if DEBUG: + print 'im_size: ({}, {})'.format(im_info[0], im_info[1]) + print 'scale: {}'.format(im_info[2]) + + # 1. Generate proposals from bbox deltas and shifted anchors + height, width = scores.shape[-2:] + + if DEBUG: + print 'score map size: {}'.format(scores.shape) + + # Enumerate all shifts + shift_x = np.arange(0, width) * self._feat_stride + shift_y = np.arange(0, height) * self._feat_stride + shift_x, shift_y = np.meshgrid(shift_x, shift_y) + shifts = np.vstack((shift_x.ravel(), shift_y.ravel(), + shift_x.ravel(), shift_y.ravel())).transpose() + + # Enumerate all shifted anchors: + # + # add A anchors (1, A, 4) to + # cell K shifts (K, 1, 4) to get + # shift anchors (K, A, 4) + # reshape to (K*A, 4) shifted anchors + A = self._num_anchors + K = shifts.shape[0] + anchors = self._anchors.reshape((1, A, 4)) + \ + shifts.reshape((1, K, 4)).transpose((1, 0, 2)) + anchors = anchors.reshape((K * A, 4)) + + # Transpose and reshape predicted bbox transformations to get them + # into the same order as the anchors: + # + # bbox deltas will be (1, 4 * A, H, W) format + # transpose to (1, H, W, 4 * A) + # reshape to (1 * H * W * A, 4) where rows are ordered by (h, w, a) + # in slowest to fastest order + bbox_deltas = bbox_deltas.transpose((0, 2, 3, 1)).reshape((-1, 4)) + if cfg_key == 'TRAIN' and cfg.TRAIN.RPN_NORMALIZE_TARGETS: + bbox_deltas *= cfg.TRAIN.RPN_NORMALIZE_STDS + bbox_deltas += cfg.TRAIN.RPN_NORMALIZE_MEANS + + # Same story for the scores: + # + # scores are (1, A, H, W) format + # transpose to (1, H, W, A) + # reshape to (1 * H * W * A, 1) where rows are ordered by (h, w, a) + scores = scores.transpose((0, 2, 3, 1)).reshape((-1, 1)) + + # Convert anchors into proposals via bbox transformations + proposals = bbox_transform_inv(anchors, bbox_deltas) + + # 2. clip predicted boxes to image + proposals = clip_boxes(proposals, im_info[:2]) + + # 3. remove predicted boxes with either height or width < threshold + # (NOTE: convert min_size to input image scale stored in im_info[2]) + keep = _filter_boxes(proposals, min_size * im_info[2]) + proposals = proposals[keep, :] + scores = scores[keep] + + # 4. sort all (proposal, score) pairs by score from highest to lowest + # 5. take top pre_nms_topN (e.g. 6000) + order = scores.ravel().argsort()[::-1] + if pre_nms_topN > 0: + order = order[:pre_nms_topN] + proposals = proposals[order, :] + scores = scores[order] + + # 6. apply nms (e.g. threshold = 0.7) + # 7. take after_nms_topN (e.g. 300) + # 8. return the top proposals (-> RoIs top) + keep = nms(np.hstack((proposals, scores)), nms_thresh) + if post_nms_topN > 0: + keep = keep[:post_nms_topN] + proposals = proposals[keep, :] + scores = scores[keep] + + # Output rois blob + # Our RPN implementation only supports a single input image, so all + # batch inds are 0 + batch_inds = np.zeros((proposals.shape[0], 1), dtype=np.float32) + blob = np.hstack((batch_inds, proposals.astype(np.float32, copy=False))) + top[0].reshape(*(blob.shape)) + top[0].data[...] = blob + + # [Optional] output scores blob + if len(top) > 1: + top[1].reshape(*(scores.shape)) + top[1].data[...] = scores + + def backward(self, top, propagate_down, bottom): + """This layer does not propagate gradients.""" + pass + + def reshape(self, bottom, top): + """Reshaping happens during the call to forward.""" + pass + +def _filter_boxes(boxes, min_size): + """Remove all boxes with any side smaller than min_size.""" + ws = boxes[:, 2] - boxes[:, 0] + 1 + hs = boxes[:, 3] - boxes[:, 1] + 1 + keep = np.where((ws >= min_size) & (hs >= min_size))[0] + return keep diff --git a/examples/rfcn/lib/rpn/proposal_target_layer.py b/examples/rfcn/lib/rpn/proposal_target_layer.py new file mode 100644 index 000000000..c0e586a82 --- /dev/null +++ b/examples/rfcn/lib/rpn/proposal_target_layer.py @@ -0,0 +1,205 @@ +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick and Sean Bell +# -------------------------------------------------------- + +import caffe +import yaml +import numpy as np +import numpy.random as npr +from fast_rcnn.config import cfg +from fast_rcnn.bbox_transform import bbox_transform +from utils.cython_bbox import bbox_overlaps + +DEBUG = False + +class ProposalTargetLayer(caffe.Layer): + """ + Assign object detection proposals to ground-truth targets. Produces proposal + classification labels and bounding-box regression targets. + """ + + def setup(self, bottom, top): + layer_params = yaml.load(self.param_str) + self._num_classes = layer_params['num_classes'] + + # sampled rois (0, x1, y1, x2, y2) + top[0].reshape(1, 5, 1, 1) + # labels + top[1].reshape(1, 1, 1, 1) + # bbox_targets + top[2].reshape(1, self._num_classes * 4, 1, 1) + # bbox_inside_weights + top[3].reshape(1, self._num_classes * 4, 1, 1) + # bbox_outside_weights + top[4].reshape(1, self._num_classes * 4, 1, 1) + + def forward(self, bottom, top): + # Proposal ROIs (0, x1, y1, x2, y2) coming from RPN + # (i.e., rpn.proposal_layer.ProposalLayer), or any other source + all_rois = bottom[0].data + # GT boxes (x1, y1, x2, y2, label) + # TODO(rbg): it's annoying that sometimes I have extra info before + # and other times after box coordinates -- normalize to one format + gt_boxes = bottom[1].data + gt_boxes = gt_boxes.reshape(gt_boxes.shape[0], gt_boxes.shape[1]) + # Include ground-truth boxes in the set of candidate rois + zeros = np.zeros((gt_boxes.shape[0], 1), dtype=gt_boxes.dtype) + all_rois = np.vstack( + (all_rois, np.hstack((zeros, gt_boxes[:, :-1]))) + ) + + # Sanity check: single batch only + assert np.all(all_rois[:, 0] == 0), \ + 'Only single item batches are supported' + + rois_per_image = np.inf if cfg.TRAIN.BATCH_SIZE == -1 else cfg.TRAIN.BATCH_SIZE + fg_rois_per_image = int(np.round(cfg.TRAIN.FG_FRACTION * rois_per_image)) + + # Sample rois with classification labels and bounding box regression + # targets + labels, rois, bbox_targets, bbox_inside_weights = _sample_rois( + all_rois, gt_boxes, fg_rois_per_image, + rois_per_image, self._num_classes) + + if DEBUG: + print 'num fg: {}'.format((labels > 0).sum()) + print 'num bg: {}'.format((labels == 0).sum()) + self._count += 1 + self._fg_num += (labels > 0).sum() + self._bg_num += (labels == 0).sum() + print 'num fg avg: {}'.format(self._fg_num / self._count) + print 'num bg avg: {}'.format(self._bg_num / self._count) + print 'ratio: {:.3f}'.format(float(self._fg_num) / float(self._bg_num)) + + # sampled rois + rois = rois.reshape((rois.shape[0], rois.shape[1], 1, 1)) + top[0].reshape(*rois.shape) + top[0].data[...] = rois + + # classification labels + labels = labels.reshape((labels.shape[0], 1, 1, 1)) + top[1].reshape(*labels.shape) + top[1].data[...] = labels + + # bbox_targets + bbox_targets = bbox_targets.reshape((bbox_targets.shape[0], bbox_targets.shape[1], 1, 1)) + top[2].reshape(*bbox_targets.shape) + top[2].data[...] = bbox_targets + + # bbox_inside_weights + bbox_inside_weights = bbox_inside_weights.reshape((bbox_inside_weights.shape[0], bbox_inside_weights.shape[1], 1, 1)) + top[3].reshape(*bbox_inside_weights.shape) + top[3].data[...] = bbox_inside_weights + + # bbox_outside_weights + bbox_inside_weights = bbox_inside_weights.reshape((bbox_inside_weights.shape[0], bbox_inside_weights.shape[1], 1, 1)) + top[4].reshape(*bbox_inside_weights.shape) + top[4].data[...] = np.array(bbox_inside_weights > 0).astype(np.float32) + + def backward(self, top, propagate_down, bottom): + """This layer does not propagate gradients.""" + pass + + def reshape(self, bottom, top): + """Reshaping happens during the call to forward.""" + pass + + +def _get_bbox_regression_labels(bbox_target_data, num_classes): + """Bounding-box regression targets (bbox_target_data) are stored in a + compact form N x (class, tx, ty, tw, th) + + This function expands those targets into the 4-of-4*K representation used + by the network (i.e. only one class has non-zero targets). + + Returns: + bbox_target (ndarray): N x 4K blob of regression targets + bbox_inside_weights (ndarray): N x 4K blob of loss weights + """ + + clss = bbox_target_data[:, 0] + bbox_targets = np.zeros((clss.size, 4 * num_classes), dtype=np.float32) + bbox_inside_weights = np.zeros(bbox_targets.shape, dtype=np.float32) + inds = np.where(clss > 0)[0] + if cfg.TRAIN.AGNOSTIC: + for ind in inds: + cls = clss[ind] + start = 4 * (1 if cls > 0 else 0) + end = start + 4 + bbox_targets[ind, start:end] = bbox_target_data[ind, 1:] + bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS + else: + for ind in inds: + cls = clss[ind] + start = int(4 * cls) + end = int(start + 4) + bbox_targets[ind, start:end] = bbox_target_data[ind, 1:] + bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS + return bbox_targets, bbox_inside_weights + + +def _compute_targets(ex_rois, gt_rois, labels): + """Compute bounding-box regression targets for an image.""" + + assert ex_rois.shape[0] == gt_rois.shape[0] + assert ex_rois.shape[1] == 4 + assert gt_rois.shape[1] == 4 + + targets = bbox_transform(ex_rois, gt_rois) + if cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED: + # Optionally normalize targets by a precomputed mean and stdev + targets = ((targets - np.array(cfg.TRAIN.BBOX_NORMALIZE_MEANS)) + / np.array(cfg.TRAIN.BBOX_NORMALIZE_STDS)) + return np.hstack( + (labels[:, np.newaxis], targets)).astype(np.float32, copy=False) + +def _sample_rois(all_rois, gt_boxes, fg_rois_per_image, rois_per_image, num_classes): + """Generate a random sample of RoIs comprising foreground and background + examples. + """ + # overlaps: (rois x gt_boxes) + overlaps = bbox_overlaps( + np.ascontiguousarray(all_rois[:, 1:5], dtype=np.float), + np.ascontiguousarray(gt_boxes[:, :4], dtype=np.float)) + gt_assignment = overlaps.argmax(axis=1) + max_overlaps = overlaps.max(axis=1) + labels = gt_boxes[gt_assignment, 4] + + # Select foreground RoIs as those with >= FG_THRESH overlap + fg_inds = np.where(max_overlaps >= cfg.TRAIN.FG_THRESH)[0] + # Guard against the case when an image has fewer than fg_rois_per_image + # foreground RoIs + fg_rois_per_this_image = min(fg_rois_per_image, fg_inds.size) + # Sample foreground regions without replacement + if fg_inds.size > 0: + fg_inds = npr.choice(fg_inds, size=int(fg_rois_per_this_image), replace=False) + + # Select background RoIs as those within [BG_THRESH_LO, BG_THRESH_HI) + bg_inds = np.where((max_overlaps < cfg.TRAIN.BG_THRESH_HI) & + (max_overlaps >= cfg.TRAIN.BG_THRESH_LO))[0] + # Compute number of background RoIs to take from this image (guarding + # against there being fewer than desired) + bg_rois_per_this_image = rois_per_image - fg_rois_per_this_image + bg_rois_per_this_image = min(bg_rois_per_this_image, bg_inds.size) + # Sample background regions without replacement + if bg_inds.size > 0: + bg_inds = npr.choice(bg_inds, size=int(bg_rois_per_this_image), replace=False) + + # The indices that we're selecting (both fg and bg) + keep_inds = np.append(fg_inds, bg_inds) + # Select sampled values from various arrays: + labels = labels[keep_inds] + # Clamp labels for the background RoIs to 0 + labels[int(fg_rois_per_this_image):] = 0 + rois = all_rois[keep_inds] + + bbox_target_data = _compute_targets( + rois[:, 1:5], gt_boxes[gt_assignment[keep_inds], :4], labels) + + bbox_targets, bbox_inside_weights = \ + _get_bbox_regression_labels(bbox_target_data, num_classes) + + return labels, rois, bbox_targets, bbox_inside_weights diff --git a/examples/rfcn/lib/setup.py b/examples/rfcn/lib/setup.py new file mode 100644 index 000000000..df9a0db76 --- /dev/null +++ b/examples/rfcn/lib/setup.py @@ -0,0 +1,162 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import os +from os.path import join as pjoin +from setuptools import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext +import subprocess +import numpy as np + +def find_in_path(name, path): + "Find a file in a search path" + # Adapted fom + # http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ + for dir in path.split(os.pathsep): + binpath = pjoin(dir, name) + if os.path.exists(binpath): + return os.path.abspath(binpath) + return None + + +def locate_cuda(): + """Locate the CUDA environment on the system + + Returns a dict with keys 'home', 'nvcc', 'include', and 'lib64' + and values giving the absolute path to each directory. + + Starts by looking for the CUDAHOME env variable. If not found, everything + is based on finding 'nvcc' in the PATH. + """ + + # first check if the CUDAHOME env variable is in use + if 'CUDAHOME' in os.environ: + home = os.environ['CUDAHOME'] + nvcc = pjoin(home, 'bin', 'nvcc') + else: + # otherwise, search the PATH for NVCC + default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin') + nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path) + if nvcc is None: + raise EnvironmentError('The nvcc binary could not be ' + 'located in your $PATH. Either add it to your path, or set $CUDAHOME') + home = os.path.dirname(os.path.dirname(nvcc)) + + cudaconfig = {'home':home, 'nvcc':nvcc, + 'include': pjoin(home, 'include'), + 'lib64': pjoin(home, 'lib64')} + for k, v in cudaconfig.iteritems(): + if not os.path.exists(v): + raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v)) + + return cudaconfig +#CUDA = locate_cuda() + + +# Obtain the numpy include directory. This logic works across numpy versions. +try: + numpy_include = np.get_include() +except AttributeError: + numpy_include = np.get_numpy_include() + +def customize_compiler_for_nvcc(self): + """inject deep into distutils to customize how the dispatch + to gcc/nvcc works. + + If you subclass UnixCCompiler, it's not trivial to get your subclass + injected in, and still have the right customizations (i.e. + distutils.sysconfig.customize_compiler) run on it. So instead of going + the OO route, I have this. Note, it's kindof like a wierd functional + subclassing going on.""" + + # tell the compiler it can processes .cu + self.src_extensions.append('.cu') + + # save references to the default compiler_so and _comple methods + default_compiler_so = self.compiler_so + super = self._compile + + # now redefine the _compile method. This gets executed for each + # object but distutils doesn't have the ability to change compilers + # based on source extension: we add it. + def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts): + if os.path.splitext(src)[1] == '.cu': + # use the cuda for .cu files + self.set_executable('compiler_so', CUDA['nvcc']) + # use only a subset of the extra_postargs, which are 1-1 translated + # from the extra_compile_args in the Extension class + postargs = extra_postargs['nvcc'] + else: + postargs = extra_postargs['gcc'] + + super(obj, src, ext, cc_args, postargs, pp_opts) + # reset the default compiler_so, which we might have changed for cuda + self.compiler_so = default_compiler_so + + # inject our redefined _compile method into the class + self._compile = _compile + + +# run the customize_compiler +class custom_build_ext(build_ext): + def build_extensions(self): + customize_compiler_for_nvcc(self.compiler) + build_ext.build_extensions(self) + + +ext_modules = [ + Extension( + "utils.cython_mathutils", + ["utils/mathutils.pyx"], + extra_compile_args={'gcc': ["-O3", "-Wno-cpp", "-Wno-unused-function"]}, + include_dirs = [numpy_include] + ), + Extension( + "utils.cython_bbox", + ["utils/bbox.pyx"], + extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]}, + include_dirs = [numpy_include] + ), + Extension( + "nms.cpu_nms", + ["nms/cpu_nms.pyx"], + extra_compile_args={'gcc': ["-O3", "-Wno-cpp", "-Wno-unused-function"]}, + include_dirs = [numpy_include] + ), + # Extension('nms.gpu_nms', + # ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'], + # library_dirs=[CUDA['lib64']], + # libraries=['cudart'], + # language='c++', + # runtime_library_dirs=[CUDA['lib64']], + # # this syntax is specific to this build system + # # we're only going to use certain compiler args with nvcc and not with + # # gcc the implementation of this trick is in customize_compiler() below + # extra_compile_args={'gcc': ["-Wno-unused-function"], + # 'nvcc': ['-arch=sm_35', + # '--ptxas-options=-v', + # '-c', + # '--compiler-options', + # "'-fPIC'"]}, + # include_dirs = [numpy_include, CUDA['include']] + # ), + Extension( + 'pycocotools._mask', + sources=['pycocotools/maskApi.c', 'pycocotools/_mask.pyx'], + include_dirs = [numpy_include, 'pycocotools'], + extra_compile_args={ + 'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']}, + ), +] + +setup( + name='fast_rcnn', + ext_modules=ext_modules, + # inject our custom trigger + cmdclass={'build_ext': custom_build_ext}, +) diff --git a/examples/rfcn/lib/transform/__init__.py b/examples/rfcn/lib/transform/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/rfcn/lib/transform/torch_image_transform_layer.py b/examples/rfcn/lib/transform/torch_image_transform_layer.py new file mode 100644 index 000000000..9273b3a76 --- /dev/null +++ b/examples/rfcn/lib/transform/torch_image_transform_layer.py @@ -0,0 +1,64 @@ +# -------------------------------------------------------- +# Fast/er R-CNN +# Licensed under The MIT License [see LICENSE for details] +# -------------------------------------------------------- + +""" Transform images for compatibility with models trained with +https://github.com/facebook/fb.resnet.torch. + +Usage in model prototxt: + +layer { + name: 'data_xform' + type: 'Python' + bottom: 'data_caffe' + top: 'data' + python_param { + module: 'transform.torch_image_transform_layer' + layer: 'TorchImageTransformLayer' + } +} +""" + +import caffe +from fast_rcnn.config import cfg +import numpy as np + +class TorchImageTransformLayer(caffe.Layer): + def setup(self, bottom, top): + # (1, 3, 1, 1) shaped arrays + self.PIXEL_MEANS = \ + np.array([[[[0.48462227599918]], + [[0.45624044862054]], + [[0.40588363755159]]]]) + self.PIXEL_STDS = \ + np.array([[[[0.22889466674951]], + [[0.22446679341259]], + [[0.22495548344775]]]]) + # The default ("old") pixel means that were already subtracted + channel_swap = (0, 3, 1, 2) + self.OLD_PIXEL_MEANS = \ + cfg.PIXEL_MEANS[np.newaxis, :, :, :].transpose(channel_swap) + + top[0].reshape(*(bottom[0].shape)) + + def forward(self, bottom, top): + ims = bottom[0].data + # Invert the channel means that were already subtracted + ims += self.OLD_PIXEL_MEANS + # 1. Permute BGR to RGB and normalize to [0, 1] + ims = ims[:, [2, 1, 0], :, :] / 255.0 + # 2. Remove channel means + ims -= self.PIXEL_MEANS + # 3. Standardize channels + ims /= self.PIXEL_STDS + top[0].reshape(*(ims.shape)) + top[0].data[...] = ims + + def backward(self, top, propagate_down, bottom): + """This layer does not propagate gradients.""" + pass + + def reshape(self, bottom, top): + """Reshaping happens during the call to forward.""" + pass diff --git a/examples/rfcn/lib/utils/__init__.py b/examples/rfcn/lib/utils/__init__.py new file mode 100644 index 000000000..7ba6a65c5 --- /dev/null +++ b/examples/rfcn/lib/utils/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- diff --git a/examples/rfcn/lib/utils/bbox.pyx b/examples/rfcn/lib/utils/bbox.pyx new file mode 100644 index 000000000..e14780ddd --- /dev/null +++ b/examples/rfcn/lib/utils/bbox.pyx @@ -0,0 +1,55 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Sergey Karayev +# -------------------------------------------------------- + +cimport cython +import numpy as np +cimport numpy as np + +DTYPE = np.float +ctypedef np.float_t DTYPE_t + +def bbox_overlaps( + np.ndarray[DTYPE_t, ndim=2] boxes, + np.ndarray[DTYPE_t, ndim=2] query_boxes): + """ + Parameters + ---------- + boxes: (N, 4) ndarray of float + query_boxes: (K, 4) ndarray of float + Returns + ------- + overlaps: (N, K) ndarray of overlap between boxes and query_boxes + """ + cdef unsigned int N = boxes.shape[0] + cdef unsigned int K = query_boxes.shape[0] + cdef np.ndarray[DTYPE_t, ndim=2] overlaps = np.zeros((N, K), dtype=DTYPE) + cdef DTYPE_t iw, ih, box_area + cdef DTYPE_t ua + cdef unsigned int k, n + for k in range(K): + box_area = ( + (query_boxes[k, 2] - query_boxes[k, 0] + 1) * + (query_boxes[k, 3] - query_boxes[k, 1] + 1) + ) + for n in range(N): + iw = ( + min(boxes[n, 2], query_boxes[k, 2]) - + max(boxes[n, 0], query_boxes[k, 0]) + 1 + ) + if iw > 0: + ih = ( + min(boxes[n, 3], query_boxes[k, 3]) - + max(boxes[n, 1], query_boxes[k, 1]) + 1 + ) + if ih > 0: + ua = float( + (boxes[n, 2] - boxes[n, 0] + 1) * + (boxes[n, 3] - boxes[n, 1] + 1) + + box_area - iw * ih + ) + overlaps[n, k] = iw * ih / ua + return overlaps diff --git a/examples/rfcn/lib/utils/blob.py b/examples/rfcn/lib/utils/blob.py new file mode 100644 index 000000000..249d179f0 --- /dev/null +++ b/examples/rfcn/lib/utils/blob.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Blob helper functions.""" + +import numpy as np +import cv2 +from utils.cython_mathutils import cpu_subtract + +def im_list_to_blob(ims): + """Convert a list of images into a network input. + + Assumes images are already prepared (means subtracted, BGR order, ...). + """ + max_shape = np.array([im.shape for im in ims]).max(axis=0) + num_images = len(ims) + blob = np.zeros((num_images, max_shape[0], max_shape[1], 3), + dtype=np.float32) + for i in xrange(num_images): + im = ims[i] + blob[i, 0:im.shape[0], 0:im.shape[1], :] = im + # Move channels (axis 3) to axis 1 + # Axis order will become: (batch elem, channel, height, width) + channel_swap = (0, 3, 1, 2) + blob = blob.transpose(channel_swap) + return blob + +def prep_im_for_blob(im, pixel_means, target_size, max_size): + """Mean subtract and scale an image for use in a blob.""" + im = im.astype(np.float32, copy=False) + pixel_means = pixel_means.astype(np.float32, copy=False) + # im -= pixel_means + cpu_subtract(im, pixel_means) + im_shape = im.shape + im_size_min = np.min(im_shape[0:2]) + im_size_max = np.max(im_shape[0:2]) + im_scale = float(target_size) / float(im_size_min) + # Prevent the biggest axis from being more than MAX_SIZE + if np.round(im_scale * im_size_max) > max_size: + im_scale = float(max_size) / float(im_size_max) + im = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, + interpolation=cv2.INTER_LINEAR) + + return im, im_scale diff --git a/examples/rfcn/lib/utils/mathutils.pyx b/examples/rfcn/lib/utils/mathutils.pyx new file mode 100644 index 000000000..13f410d9a --- /dev/null +++ b/examples/rfcn/lib/utils/mathutils.pyx @@ -0,0 +1,41 @@ +# -------------------------------------------------------- +# Math Utils +# Copyright (c) 2017 Intel +# Licensed under The MIT License [see LICENSE for details] +# Written by YAO Matrix +# -------------------------------------------------------- + +import numpy as np +cimport numpy as np +cimport cython +cimport openmp + +from cython.parallel cimport prange +from cython.parallel cimport parallel + +import os +from multiprocessing import cpu_count +cdef int thread_num = 0 +try: + thread_num = os.environ["OMP_NUM_THREADS"] +except: + thread_num = cpu_count() / 2 + + + +@cython.boundscheck(False) +@cython.wraparound(False) +def cpu_subtract(np.ndarray[np.float32_t, ndim=3] src, np.ndarray[np.float32_t, ndim=3] scalar): + global thread_num + + cdef unsigned int rows = src.shape[0] + cdef unsigned int cols = src.shape[1] + cdef unsigned int chs = src.shape[2] + + cdef int i, j, k + + with nogil: + for i in prange(rows, schedule = 'dynamic', num_threads = thread_num): + for j in xrange(cols): + for k in xrange(chs): + src[i, j, k] -= scalar[0, 0, k] diff --git a/examples/rfcn/lib/utils/timer.py b/examples/rfcn/lib/utils/timer.py new file mode 100644 index 000000000..dacc942c2 --- /dev/null +++ b/examples/rfcn/lib/utils/timer.py @@ -0,0 +1,32 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import time + +class Timer(object): + """A simple timer.""" + def __init__(self): + self.total_time = 0. + self.calls = 0 + self.start_time = 0. + self.diff = 0. + self.average_time = 0. + + def tic(self): + # using time.time instead of time.clock because time time.clock + # does not normalize for multithreading + self.start_time = time.time() + + def toc(self, average=True): + self.diff = time.time() - self.start_time + self.total_time += self.diff + self.calls += 1 + self.average_time = self.total_time / self.calls + if average: + return self.average_time + else: + return self.diff diff --git a/examples/rfcn/run.sh b/examples/rfcn/run.sh new file mode 100755 index 000000000..4f1d536e5 --- /dev/null +++ b/examples/rfcn/run.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib +export GLOG_minloglevel=0 + + +unset OMP_NUM_THREADS +# export OMP_NUM_THREADS=44 +# export MKL_NUM_THREADS + +# export OMP_WAIT_POLICY=passive +unset MKL_THREADING_LAYER +# export MKL_THREADING_LAYER=gnu + + +./experiments/scripts/rfcn_end2end.sh 0 ResNet-101 pascal_voc diff --git a/examples/rfcn/tools/README.md b/examples/rfcn/tools/README.md new file mode 100644 index 000000000..6fd409412 --- /dev/null +++ b/examples/rfcn/tools/README.md @@ -0,0 +1 @@ +Tools for training, testing, and compressing Fast R-CNN networks. diff --git a/examples/rfcn/tools/_init_paths.py b/examples/rfcn/tools/_init_paths.py new file mode 100755 index 000000000..20577f0d7 --- /dev/null +++ b/examples/rfcn/tools/_init_paths.py @@ -0,0 +1,26 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Set up paths for Fast R-CNN.""" + +import os.path as osp +import sys + +def add_path(path): + if path not in sys.path: + sys.path.insert(0, path) + +this_dir = osp.dirname(__file__) + +# Add caffe to PYTHONPATH +#caffe_path = osp.join(this_dir, '..', 'caffe-fast-rcnn', 'python') +caffe_path = osp.join(this_dir, '..', '..', '..', 'python') +add_path(caffe_path) + +# Add lib to PYTHONPATH +lib_path = osp.join(this_dir, '..', 'lib') +add_path(lib_path) diff --git a/examples/rfcn/tools/compress_net.py b/examples/rfcn/tools/compress_net.py new file mode 100755 index 000000000..e044e5bcd --- /dev/null +++ b/examples/rfcn/tools/compress_net.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Compress a Fast R-CNN network using truncated SVD.""" + +import _init_paths +import caffe +import argparse +import numpy as np +import os, sys + +def parse_args(): + """Parse input arguments.""" + parser = argparse.ArgumentParser(description='Compress a Fast R-CNN network') + parser.add_argument('--def', dest='prototxt', + help='prototxt file defining the uncompressed network', + default=None, type=str) + parser.add_argument('--def-svd', dest='prototxt_svd', + help='prototxt file defining the SVD compressed network', + default=None, type=str) + parser.add_argument('--net', dest='caffemodel', + help='model to compress', + default=None, type=str) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +def compress_weights(W, l): + """Compress the weight matrix W of an inner product (fully connected) layer + using truncated SVD. + + Parameters: + W: N x M weights matrix + l: number of singular values to retain + + Returns: + Ul, L: matrices such that W \approx Ul*L + """ + + # numpy doesn't seem to have a fast truncated SVD algorithm... + # this could be faster + U, s, V = np.linalg.svd(W, full_matrices=False) + + Ul = U[:, :l] + sl = s[:l] + Vl = V[:l, :] + + L = np.dot(np.diag(sl), Vl) + return Ul, L + +def main(): + args = parse_args() + + # prototxt = 'models/VGG16/test.prototxt' + # caffemodel = 'snapshots/vgg16_fast_rcnn_iter_40000.caffemodel' + net = caffe.Net(args.prototxt, args.caffemodel, caffe.TEST) + + # prototxt_svd = 'models/VGG16/svd/test_fc6_fc7.prototxt' + # caffemodel = 'snapshots/vgg16_fast_rcnn_iter_40000.caffemodel' + net_svd = caffe.Net(args.prototxt_svd, args.caffemodel, caffe.TEST) + + print('Uncompressed network {} : {}'.format(args.prototxt, args.caffemodel)) + print('Compressed network prototxt {}'.format(args.prototxt_svd)) + + out = os.path.splitext(os.path.basename(args.caffemodel))[0] + '_svd' + out_dir = os.path.dirname(args.caffemodel) + + # Compress fc6 + if net_svd.params.has_key('fc6_L'): + l_fc6 = net_svd.params['fc6_L'][0].data.shape[0] + print(' fc6_L bottleneck size: {}'.format(l_fc6)) + + # uncompressed weights and biases + W_fc6 = net.params['fc6'][0].data + B_fc6 = net.params['fc6'][1].data + + print(' compressing fc6...') + Ul_fc6, L_fc6 = compress_weights(W_fc6, l_fc6) + + assert(len(net_svd.params['fc6_L']) == 1) + + # install compressed matrix factors (and original biases) + net_svd.params['fc6_L'][0].data[...] = L_fc6 + + net_svd.params['fc6_U'][0].data[...] = Ul_fc6 + net_svd.params['fc6_U'][1].data[...] = B_fc6 + + out += '_fc6_{}'.format(l_fc6) + + # Compress fc7 + if net_svd.params.has_key('fc7_L'): + l_fc7 = net_svd.params['fc7_L'][0].data.shape[0] + print ' fc7_L bottleneck size: {}'.format(l_fc7) + + W_fc7 = net.params['fc7'][0].data + B_fc7 = net.params['fc7'][1].data + + print(' compressing fc7...') + Ul_fc7, L_fc7 = compress_weights(W_fc7, l_fc7) + + assert(len(net_svd.params['fc7_L']) == 1) + + net_svd.params['fc7_L'][0].data[...] = L_fc7 + + net_svd.params['fc7_U'][0].data[...] = Ul_fc7 + net_svd.params['fc7_U'][1].data[...] = B_fc7 + + out += '_fc7_{}'.format(l_fc7) + + filename = '{}/{}.caffemodel'.format(out_dir, out) + net_svd.save(filename) + print 'Wrote svd model to: {:s}'.format(filename) + +if __name__ == '__main__': + main() diff --git a/examples/rfcn/tools/demo.py b/examples/rfcn/tools/demo.py new file mode 100755 index 000000000..7293b4635 --- /dev/null +++ b/examples/rfcn/tools/demo.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +""" +Demo script showing detections in sample images. + +See README.md for installation instructions before running. +""" + +import _init_paths +from fast_rcnn.config import cfg +from fast_rcnn.test import im_detect +from fast_rcnn.nms_wrapper import nms +from utils.timer import Timer +import matplotlib.pyplot as plt +import numpy as np +import scipy.io as sio +import caffe, os, sys, cv2 +import argparse + +CLASSES = ('__background__', + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', + 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', + 'sheep', 'sofa', 'train', 'tvmonitor') + +NETS = {'vgg16': ('VGG16', + 'VGG16_faster_rcnn_final.caffemodel'), + 'zf': ('ZF', + 'ZF_faster_rcnn_final.caffemodel')} + + +def vis_detections(im, class_name, dets, thresh=0.5): + """Draw detected bounding boxes.""" + inds = np.where(dets[:, -1] >= thresh)[0] + if len(inds) == 0: + return + + im = im[:, :, (2, 1, 0)] + fig, ax = plt.subplots(figsize=(12, 12)) + ax.imshow(im, aspect='equal') + for i in inds: + bbox = dets[i, :4] + score = dets[i, -1] + + ax.add_patch( + plt.Rectangle((bbox[0], bbox[1]), + bbox[2] - bbox[0], + bbox[3] - bbox[1], fill=False, + edgecolor='red', linewidth=3.5) + ) + ax.text(bbox[0], bbox[1] - 2, + '{:s} {:.3f}'.format(class_name, score), + bbox=dict(facecolor='blue', alpha=0.5), + fontsize=14, color='white') + + ax.set_title(('{} detections with ' + 'p({} | box) >= {:.1f}').format(class_name, class_name, + thresh), + fontsize=14) + plt.axis('off') + plt.tight_layout() + plt.draw() + +def demo(net, image_name): + """Detect object classes in an image using pre-computed object proposals.""" + + # Load the demo image + im_file = os.path.join(cfg.DATA_DIR, 'demo', image_name) + im = cv2.imread(im_file) + + # Detect all object classes and regress object bounds + timer = Timer() + timer.tic() + scores, boxes = im_detect(net, im) + timer.toc() + print ('Detection took {:.3f}s for ' + '{:d} object proposals').format(timer.total_time, boxes.shape[0]) + + # Visualize detections for each class + CONF_THRESH = 0.8 + NMS_THRESH = 0.3 + for cls_ind, cls in enumerate(CLASSES[1:]): + cls_ind += 1 # because we skipped background + cls_boxes = boxes[:, 4*cls_ind:4*(cls_ind + 1)] + cls_scores = scores[:, cls_ind] + dets = np.hstack((cls_boxes, + cls_scores[:, np.newaxis])).astype(np.float32) + keep = nms(dets, NMS_THRESH) + dets = dets[keep, :] + vis_detections(im, cls, dets, thresh=CONF_THRESH) + +def parse_args(): + """Parse input arguments.""" + parser = argparse.ArgumentParser(description='Faster R-CNN demo') + parser.add_argument('--net', dest='demo_net', help='Network to use [vgg16]', + choices=NETS.keys(), default='vgg16') + + args = parser.parse_args() + + return args + +if __name__ == '__main__': + cfg.TEST.HAS_RPN = True # Use RPN for proposals + + args = parse_args() + + prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0], + 'faster_rcnn_alt_opt', 'faster_rcnn_test.pt') + caffemodel = os.path.join(cfg.DATA_DIR, 'faster_rcnn_models', + NETS[args.demo_net][1]) + + if not os.path.isfile(caffemodel): + raise IOError(('{:s} not found.\nDid you run ./data/script/' + 'fetch_faster_rcnn_models.sh?').format(caffemodel)) + + caffe.set_mode_cpu() + net = caffe.Net(prototxt, caffemodel, caffe.TEST) + + print '\n\nLoaded network {:s}'.format(caffemodel) + + # Warmup on a dummy image + im = 128 * np.ones((300, 500, 3), dtype=np.uint8) + for i in xrange(2): + _, _= im_detect(net, im) + + im_names = ['000456.jpg', '000542.jpg', '001150.jpg', + '001763.jpg', '004545.jpg'] + for im_name in im_names: + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Demo for data/demo/{}'.format(im_name) + demo(net, im_name) + + plt.show() diff --git a/examples/rfcn/tools/demo_rfcn.py b/examples/rfcn/tools/demo_rfcn.py new file mode 100755 index 000000000..cece47846 --- /dev/null +++ b/examples/rfcn/tools/demo_rfcn.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# R-FCN +# Copyright (c) 2016 Yuwen Xiong +# Licensed under The MIT License [see LICENSE for details] +# Written by Yuwen Xiong +# -------------------------------------------------------- + +""" +Demo script showing detections in sample images. + +See README.md for installation instructions before running. +""" + +import _init_paths +from fast_rcnn.config import cfg +from fast_rcnn.test import im_detect +from fast_rcnn.nms_wrapper import nms +from utils.timer import Timer +import matplotlib.pyplot as plt +import numpy as np +import scipy.io as sio +import caffe, os, sys, cv2 +import argparse + +CLASSES = ('__background__', + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', + 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', + 'sheep', 'sofa', 'train', 'tvmonitor') + +NETS = {'ResNet-101': ('ResNet-101', + 'resnet101_rfcn_final.caffemodel'), + 'ResNet-50': ('ResNet-50', + 'resnet50_rfcn_final.caffemodel')} + + +def vis_detections(im, class_name, dets, thresh=0.5): + """Draw detected bounding boxes.""" + inds = np.where(dets[:, -1] >= thresh)[0] + if len(inds) == 0: + return + + im = im[:, :, (2, 1, 0)] + fig, ax = plt.subplots(figsize=(12, 12)) + ax.imshow(im, aspect='equal') + for i in inds: + bbox = dets[i, :4] + score = dets[i, -1] + + ax.add_patch( + plt.Rectangle((bbox[0], bbox[1]), + bbox[2] - bbox[0], + bbox[3] - bbox[1], fill=False, + edgecolor='red', linewidth=3.5) + ) + ax.text(bbox[0], bbox[1] - 2, + '{:s} {:.3f}'.format(class_name, score), + bbox=dict(facecolor='blue', alpha=0.5), + fontsize=14, color='white') + + ax.set_title(('{} detections with ' + 'p({} | box) >= {:.1f}').format(class_name, class_name, + thresh), + fontsize=14) + plt.axis('off') + plt.tight_layout() + plt.draw() + +def demo(net, image_name): + """Detect object classes in an image using pre-computed object proposals.""" + + # Load the demo image + im_file = os.path.join(cfg.DATA_DIR, 'demo', image_name) + im = cv2.imread(im_file) + # print im.shape + + # Detect all object classes and regress object bounds + timer = Timer() + timer.tic() + scores, boxes = im_detect(net, im) + timer.toc() + print ('Detection took {:.3f}s for ' + '{:d} object proposals').format(timer.total_time, boxes.shape[0]) + + # Visualize detections for each class + CONF_THRESH = 0.8 + NMS_THRESH = 0.3 + for cls_ind, cls in enumerate(CLASSES[1:]): + cls_ind += 1 # because we skipped background + cls_boxes = boxes[:, 4:8] + cls_scores = scores[:, cls_ind] + dets = np.hstack((cls_boxes, + cls_scores[:, np.newaxis])).astype(np.float32) + keep = nms(dets, NMS_THRESH) + dets = dets[keep, :] + # print dets + vis_detections(im, cls, dets, thresh=CONF_THRESH) + +def parse_args(): + """Parse input arguments.""" + parser = argparse.ArgumentParser(description='Faster R-CNN demo') + parser.add_argument('--gpu', dest='gpu_id', help='GPU device id to use [0]', + default=0, type=int) + parser.add_argument('--cpu', dest='cpu_mode', + help='Use CPU mode (overrides --gpu)', + action='store_true') + parser.add_argument('--net', dest='demo_net', help='Network to use [ResNet-101]', + choices=NETS.keys(), default='ResNet-101') + + args = parser.parse_args() + + return args + +if __name__ == '__main__': + cfg.TEST.HAS_RPN = True # Use RPN for proposals + + args = parse_args() + + prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0], + 'rfcn_end2end', 'test_agnostic.prototxt') + caffemodel = os.path.join(cfg.DATA_DIR, 'rfcn_models', + NETS[args.demo_net][1]) + + if not os.path.isfile(caffemodel): + raise IOError(('{:s} not found.\n').format(caffemodel)) + args.cpu_mode = 1 + if args.cpu_mode: + caffe.set_mode_cpu() + else: + caffe.set_mode_gpu() + caffe.set_device(args.gpu_id) + cfg.GPU_ID = args.gpu_id + + print(prototxt) + net = caffe.Net(prototxt, caffemodel, caffe.TEST) + + print '\n\nLoaded network {:s}'.format(caffemodel) + import time + time.sleep(5) + + # Warmup on a dummy image + im = 128 * np.ones((375, 500, 3), dtype=np.uint8) + # im = 128 * np.ones((300, 500, 3), dtype=np.uint8) + print '\n dummy image generation done' + for i in xrange(2): + print '\n start object detection' + _, _= im_detect(net, im) + print '\n object detection done' + + im_names = ['000456.jpg', '000542.jpg', '001150.jpg', + '001763.jpg', '004545.jpg'] + for im_name in im_names: + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Demo for data/demo/{}'.format(im_name) + demo(net, im_name) + + plt.show() diff --git a/examples/rfcn/tools/eval_recall.py b/examples/rfcn/tools/eval_recall.py new file mode 100755 index 000000000..b1a59dc27 --- /dev/null +++ b/examples/rfcn/tools/eval_recall.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import _init_paths +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list +from datasets.factory import get_imdb +import argparse +import time, os, sys +import numpy as np + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Test a Fast R-CNN network') + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to test', + default='voc_2007_test', type=str) + parser.add_argument('--method', dest='method', + help='proposal method', + default='selective_search', type=str) + parser.add_argument('--rpn-file', dest='rpn_file', + default=None, type=str) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + imdb = get_imdb(args.imdb_name) + imdb.set_proposal_method(args.method) + if args.rpn_file is not None: + imdb.config['rpn_file'] = args.rpn_file + + candidate_boxes = None + if 0: + import scipy.io as sio + filename = 'debug/stage1_rpn_voc_2007_test.mat' + raw_data = sio.loadmat(filename)['aboxes'].ravel() + candidate_boxes = raw_data + + ar, gt_overlaps, recalls, thresholds = \ + imdb.evaluate_recall(candidate_boxes=candidate_boxes) + print 'Method: {}'.format(args.method) + print 'AverageRec: {:.3f}'.format(ar) + + def recall_at(t): + ind = np.where(thresholds > t - 1e-5)[0][0] + assert np.isclose(thresholds[ind], t) + return recalls[ind] + + print 'Recall@0.5: {:.3f}'.format(recall_at(0.5)) + print 'Recall@0.6: {:.3f}'.format(recall_at(0.6)) + print 'Recall@0.7: {:.3f}'.format(recall_at(0.7)) + print 'Recall@0.8: {:.3f}'.format(recall_at(0.8)) + print 'Recall@0.9: {:.3f}'.format(recall_at(0.9)) + # print again for easy spreadsheet copying + print '{:.3f}'.format(ar) + print '{:.3f}'.format(recall_at(0.5)) + print '{:.3f}'.format(recall_at(0.6)) + print '{:.3f}'.format(recall_at(0.7)) + print '{:.3f}'.format(recall_at(0.8)) + print '{:.3f}'.format(recall_at(0.9)) diff --git a/examples/rfcn/tools/reval.py b/examples/rfcn/tools/reval.py new file mode 100755 index 000000000..905ec1b14 --- /dev/null +++ b/examples/rfcn/tools/reval.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Reval = re-eval. Re-evaluate saved detections.""" + +import _init_paths +from fast_rcnn.test import apply_nms +from fast_rcnn.config import cfg +from datasets.factory import get_imdb +import cPickle +import os, sys, argparse +import numpy as np + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Re-evaluate results') + parser.add_argument('output_dir', nargs=1, help='results directory', + type=str) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to re-evaluate', + default='voc_2007_test', type=str) + parser.add_argument('--matlab', dest='matlab_eval', + help='use matlab for evaluation', + action='store_true') + parser.add_argument('--comp', dest='comp_mode', help='competition mode', + action='store_true') + parser.add_argument('--nms', dest='apply_nms', help='apply nms', + action='store_true') + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +def from_dets(imdb_name, output_dir, args): + imdb = get_imdb(imdb_name) + imdb.competition_mode(args.comp_mode) + imdb.config['matlab_eval'] = args.matlab_eval + with open(os.path.join(output_dir, 'detections.pkl'), 'rb') as f: + dets = cPickle.load(f) + + if args.apply_nms: + print 'Applying NMS to all detections' + nms_dets = apply_nms(dets, cfg.TEST.NMS) + else: + nms_dets = dets + + print 'Evaluating detections' + imdb.evaluate_detections(nms_dets, output_dir) + +if __name__ == '__main__': + args = parse_args() + + output_dir = os.path.abspath(args.output_dir[0]) + imdb_name = args.imdb_name + from_dets(imdb_name, output_dir, args) diff --git a/examples/rfcn/tools/rpn_generate.py b/examples/rfcn/tools/rpn_generate.py new file mode 100755 index 000000000..f8ca4a167 --- /dev/null +++ b/examples/rfcn/tools/rpn_generate.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast/er/ R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Generate RPN proposals.""" + +import _init_paths +import numpy as np +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list, get_output_dir +from datasets.factory import get_imdb +from rpn.generate import imdb_proposals +import cPickle +import caffe +import argparse +import pprint +import time, os, sys + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Test a Fast R-CNN network') + parser.add_argument('--gpu', dest='gpu_id', help='GPU id to use', + default=0, type=int) + parser.add_argument('--def', dest='prototxt', + help='prototxt file defining the network', + default=None, type=str) + parser.add_argument('--net', dest='caffemodel', + help='model to test', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', default=None, type=str) + parser.add_argument('--wait', dest='wait', + help='wait until net file exists', + default=True, type=bool) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to test', + default='voc_2007_test', type=str) + parser.add_argument('--set', dest='set_cfgs', + help='set config keys', default=None, + nargs=argparse.REMAINDER) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + if args.set_cfgs is not None: + cfg_from_list(args.set_cfgs) + + cfg.GPU_ID = args.gpu_id + + # RPN test settings + cfg.TEST.RPN_PRE_NMS_TOP_N = -1 + cfg.TEST.RPN_POST_NMS_TOP_N = 2000 + + print('Using config:') + pprint.pprint(cfg) + + while not os.path.exists(args.caffemodel) and args.wait: + print('Waiting for {} to exist...'.format(args.caffemodel)) + time.sleep(10) + + caffe.set_mode_gpu() + caffe.set_device(args.gpu_id) + net = caffe.Net(args.prototxt, args.caffemodel, caffe.TEST) + net.name = os.path.splitext(os.path.basename(args.caffemodel))[0] + + imdb = get_imdb(args.imdb_name) + imdb_boxes = imdb_proposals(net, imdb) + + output_dir = get_output_dir(imdb, net) + rpn_file = os.path.join(output_dir, net.name + '_rpn_proposals.pkl') + with open(rpn_file, 'wb') as f: + cPickle.dump(imdb_boxes, f, cPickle.HIGHEST_PROTOCOL) + print 'Wrote RPN proposals to {}'.format(rpn_file) diff --git a/examples/rfcn/tools/test_net.py b/examples/rfcn/tools/test_net.py new file mode 100755 index 000000000..ff47037d6 --- /dev/null +++ b/examples/rfcn/tools/test_net.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Test a Fast R-CNN network on an image database.""" + +import _init_paths +from fast_rcnn.test import test_net +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list +from datasets.factory import get_imdb +import caffe +import argparse +import pprint +import time, os, sys + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Test a Fast R-CNN network') + parser.add_argument('--gpu', dest='gpu_id', help='GPU id to use', + default=0, type=int) + parser.add_argument('--def', dest='prototxt', + help='prototxt file defining the network', + default=None, type=str) + parser.add_argument('--net', dest='caffemodel', + help='model to test', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', default=None, type=str) + parser.add_argument('--wait', dest='wait', + help='wait until net file exists', + default=True, type=bool) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to test', + default='voc_2007_test', type=str) + parser.add_argument('--comp', dest='comp_mode', help='competition mode', + action='store_true') + parser.add_argument('--set', dest='set_cfgs', + help='set config keys', default=None, + nargs=argparse.REMAINDER) + parser.add_argument('--vis', dest='vis', help='visualize detections', + action='store_true') + parser.add_argument('--num_dets', dest='max_per_image', + help='max number of detections per image', + default=400, type=int) + parser.add_argument('--rpn_file', dest='rpn_file', + default=None, type=str) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + if args.set_cfgs is not None: + cfg_from_list(args.set_cfgs) + + cfg.GPU_ID = args.gpu_id + + print('Using config:') + pprint.pprint(cfg) + + while not os.path.exists(args.caffemodel) and args.wait: + print('Waiting for {} to exist...'.format(args.caffemodel)) + time.sleep(10) + + #caffe.set_mode_gpu() + #caffe.set_device(args.gpu_id) + net = caffe.Net(args.prototxt, args.caffemodel, caffe.TEST) + net.name = os.path.splitext(os.path.basename(args.caffemodel))[0] + + imdb = get_imdb(args.imdb_name) + imdb.competition_mode(args.comp_mode) + if not cfg.TEST.HAS_RPN: + imdb.set_proposal_method(cfg.TEST.PROPOSAL_METHOD) + if cfg.TEST.PROPOSAL_METHOD == 'rpn': + imdb.config['rpn_file'] = args.rpn_file + + test_net(net, imdb, max_per_image=args.max_per_image, vis=args.vis) diff --git a/examples/rfcn/tools/train_faster_rcnn_alt_opt.py b/examples/rfcn/tools/train_faster_rcnn_alt_opt.py new file mode 100755 index 000000000..e49844a45 --- /dev/null +++ b/examples/rfcn/tools/train_faster_rcnn_alt_opt.py @@ -0,0 +1,334 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Faster R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Train a Faster R-CNN network using alternating optimization. +This tool implements the alternating optimization algorithm described in our +NIPS 2015 paper ("Faster R-CNN: Towards Real-time Object Detection with Region +Proposal Networks." Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun.) +""" + +import _init_paths +from fast_rcnn.train import get_training_roidb, train_net +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list, get_output_dir +from datasets.factory import get_imdb +from rpn.generate import imdb_proposals +import argparse +import pprint +import numpy as np +import sys, os +import multiprocessing as mp +import cPickle +import shutil + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Train a Faster R-CNN network') + parser.add_argument('--gpu', dest='gpu_id', + help='GPU device id to use [0]', + default=0, type=int) + parser.add_argument('--net_name', dest='net_name', + help='network name (e.g., "ZF")', + default=None, type=str) + parser.add_argument('--weights', dest='pretrained_model', + help='initialize with pretrained model weights', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', + default=None, type=str) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to train on', + default='voc_2007_trainval', type=str) + parser.add_argument('--set', dest='set_cfgs', + help='set config keys', default=None, + nargs=argparse.REMAINDER) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +def get_roidb(imdb_name, rpn_file=None): + imdb = get_imdb(imdb_name) + print 'Loaded dataset `{:s}` for training'.format(imdb.name) + imdb.set_proposal_method(cfg.TRAIN.PROPOSAL_METHOD) + print 'Set proposal method: {:s}'.format(cfg.TRAIN.PROPOSAL_METHOD) + if rpn_file is not None: + imdb.config['rpn_file'] = rpn_file + roidb = get_training_roidb(imdb) + return roidb, imdb + +def get_solvers(net_name): + # Faster R-CNN Alternating Optimization + n = 'faster_rcnn_alt_opt' + # Solver for each training stage + solvers = [[net_name, n, 'stage1_rpn_solver60k80k.pt'], + [net_name, n, 'stage1_fast_rcnn_solver30k40k.pt'], + [net_name, n, 'stage2_rpn_solver60k80k.pt'], + [net_name, n, 'stage2_fast_rcnn_solver30k40k.pt']] + solvers = [os.path.join(cfg.MODELS_DIR, *s) for s in solvers] + # Iterations for each training stage + max_iters = [80000, 40000, 80000, 40000] + # max_iters = [100, 100, 100, 100] + # Test prototxt for the RPN + rpn_test_prototxt = os.path.join( + cfg.MODELS_DIR, net_name, n, 'rpn_test.pt') + return solvers, max_iters, rpn_test_prototxt + +# ------------------------------------------------------------------------------ +# Pycaffe doesn't reliably free GPU memory when instantiated nets are discarded +# (e.g. "del net" in Python code). To work around this issue, each training +# stage is executed in a separate process using multiprocessing.Process. +# ------------------------------------------------------------------------------ + +def _init_caffe(cfg): + """Initialize pycaffe in a training process. + """ + + import caffe + # fix the random seeds (numpy and caffe) for reproducibility + np.random.seed(cfg.RNG_SEED) + caffe.set_random_seed(cfg.RNG_SEED) + # set up caffe + caffe.set_mode_gpu() + caffe.set_device(cfg.GPU_ID) + +def train_rpn(queue=None, imdb_name=None, init_model=None, solver=None, + max_iters=None, cfg=None): + """Train a Region Proposal Network in a separate training process. + """ + + # Not using any proposals, just ground-truth boxes + cfg.TRAIN.HAS_RPN = True + cfg.TRAIN.BBOX_REG = False # applies only to Fast R-CNN bbox regression + cfg.TRAIN.PROPOSAL_METHOD = 'gt' + cfg.TRAIN.IMS_PER_BATCH = 1 + print 'Init model: {}'.format(init_model) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + roidb, imdb = get_roidb(imdb_name) + print 'roidb len: {}'.format(len(roidb)) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + + model_paths = train_net(solver, roidb, output_dir, + pretrained_model=init_model, + max_iters=max_iters) + # Cleanup all but the final model + for i in model_paths[:-1]: + os.remove(i) + rpn_model_path = model_paths[-1] + # Send final model path through the multiprocessing queue + queue.put({'model_path': rpn_model_path}) + +def rpn_generate(queue=None, imdb_name=None, rpn_model_path=None, cfg=None, + rpn_test_prototxt=None): + """Use a trained RPN to generate proposals. + """ + + cfg.TEST.RPN_PRE_NMS_TOP_N = -1 # no pre NMS filtering + cfg.TEST.RPN_POST_NMS_TOP_N = 2000 # limit top boxes after NMS + print 'RPN model: {}'.format(rpn_model_path) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + # NOTE: the matlab implementation computes proposals on flipped images, too. + # We compute them on the image once and then flip the already computed + # proposals. This might cause a minor loss in mAP (less proposal jittering). + imdb = get_imdb(imdb_name) + print 'Loaded dataset `{:s}` for proposal generation'.format(imdb.name) + + # Load RPN and configure output directory + rpn_net = caffe.Net(rpn_test_prototxt, rpn_model_path, caffe.TEST) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + # Generate proposals on the imdb + rpn_proposals = imdb_proposals(rpn_net, imdb) + # Write proposals to disk and send the proposal file path through the + # multiprocessing queue + rpn_net_name = os.path.splitext(os.path.basename(rpn_model_path))[0] + rpn_proposals_path = os.path.join( + output_dir, rpn_net_name + '_proposals.pkl') + with open(rpn_proposals_path, 'wb') as f: + cPickle.dump(rpn_proposals, f, cPickle.HIGHEST_PROTOCOL) + print 'Wrote RPN proposals to {}'.format(rpn_proposals_path) + queue.put({'proposal_path': rpn_proposals_path}) + +def train_fast_rcnn(queue=None, imdb_name=None, init_model=None, solver=None, + max_iters=None, cfg=None, rpn_file=None): + """Train a Fast R-CNN using proposals generated by an RPN. + """ + + cfg.TRAIN.HAS_RPN = False # not generating prosals on-the-fly + cfg.TRAIN.PROPOSAL_METHOD = 'rpn' # use pre-computed RPN proposals instead + cfg.TRAIN.IMS_PER_BATCH = 2 + print 'Init model: {}'.format(init_model) + print 'RPN proposals: {}'.format(rpn_file) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + roidb, imdb = get_roidb(imdb_name, rpn_file=rpn_file) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + # Train Fast R-CNN + model_paths = train_net(solver, roidb, output_dir, + pretrained_model=init_model, + max_iters=max_iters) + # Cleanup all but the final model + for i in model_paths[:-1]: + os.remove(i) + fast_rcnn_model_path = model_paths[-1] + # Send Fast R-CNN model path over the multiprocessing queue + queue.put({'model_path': fast_rcnn_model_path}) + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + if args.set_cfgs is not None: + cfg_from_list(args.set_cfgs) + cfg.GPU_ID = args.gpu_id + + # -------------------------------------------------------------------------- + # Pycaffe doesn't reliably free GPU memory when instantiated nets are + # discarded (e.g. "del net" in Python code). To work around this issue, each + # training stage is executed in a separate process using + # multiprocessing.Process. + # -------------------------------------------------------------------------- + + # queue for communicated results between processes + mp_queue = mp.Queue() + # solves, iters, etc. for each training stage + solvers, max_iters, rpn_test_prototxt = get_solvers(args.net_name) + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 RPN, init from ImageNet model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage1' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=args.pretrained_model, + solver=solvers[0], + max_iters=max_iters[0], + cfg=cfg) + p = mp.Process(target=train_rpn, kwargs=mp_kwargs) + p.start() + rpn_stage1_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 RPN, generate proposals' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + rpn_model_path=str(rpn_stage1_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage1_out['proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 Fast R-CNN using RPN proposals, init from ImageNet model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage1' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=args.pretrained_model, + solver=solvers[1], + max_iters=max_iters[1], + cfg=cfg, + rpn_file=rpn_stage1_out['proposal_path']) + p = mp.Process(target=train_fast_rcnn, kwargs=mp_kwargs) + p.start() + fast_rcnn_stage1_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 RPN, init from stage 1 Fast R-CNN model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage2' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=str(fast_rcnn_stage1_out['model_path']), + solver=solvers[2], + max_iters=max_iters[2], + cfg=cfg) + p = mp.Process(target=train_rpn, kwargs=mp_kwargs) + p.start() + rpn_stage2_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 RPN, generate proposals' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + rpn_model_path=str(rpn_stage2_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage2_out['proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 Fast R-CNN, init from stage 2 RPN R-CNN model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage2' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=str(rpn_stage2_out['model_path']), + solver=solvers[3], + max_iters=max_iters[3], + cfg=cfg, + rpn_file=rpn_stage2_out['proposal_path']) + p = mp.Process(target=train_fast_rcnn, kwargs=mp_kwargs) + p.start() + fast_rcnn_stage2_out = mp_queue.get() + p.join() + + # Create final model (just a copy of the last stage) + final_path = os.path.join( + os.path.dirname(fast_rcnn_stage2_out['model_path']), + args.net_name + '_faster_rcnn_final.caffemodel') + print 'cp {} -> {}'.format( + fast_rcnn_stage2_out['model_path'], final_path) + shutil.copy(fast_rcnn_stage2_out['model_path'], final_path) + print 'Final model: {}'.format(final_path) diff --git a/examples/rfcn/tools/train_net.py b/examples/rfcn/tools/train_net.py new file mode 100755 index 000000000..3c6e6fbb6 --- /dev/null +++ b/examples/rfcn/tools/train_net.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +"""Train a Fast R-CNN network on a region of interest database.""" + +import _init_paths +from fast_rcnn.train import get_training_roidb, train_net +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list, get_output_dir +from datasets.factory import get_imdb +import datasets.imdb +import caffe +import argparse +import pprint +import numpy as np +import sys + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Train a Fast R-CNN network') + parser.add_argument('--gpu', dest='gpu_id', + help='GPU device id to use [0]', + default=0, type=int) + parser.add_argument('--solver', dest='solver', + help='solver prototxt', + default=None, type=str) + parser.add_argument('--iters', dest='max_iters', + help='number of iterations to train', + default=40000, type=int) + parser.add_argument('--weights', dest='pretrained_model', + help='initialize with pretrained model weights', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', + default=None, type=str) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to train on', + default='voc_2007_trainval', type=str) + parser.add_argument('--rand', dest='randomize', + help='randomize (do not use a fixed seed)', + action='store_true') + parser.add_argument('--set', dest='set_cfgs', + help='set config keys', default=None, + nargs=argparse.REMAINDER) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +def combined_roidb(imdb_names): + def get_roidb(imdb_name): + imdb = get_imdb(imdb_name) + print 'Loaded dataset `{:s}` for training'.format(imdb.name) + imdb.set_proposal_method(cfg.TRAIN.PROPOSAL_METHOD) + print 'Set proposal method: {:s}'.format(cfg.TRAIN.PROPOSAL_METHOD) + roidb = get_training_roidb(imdb) + return roidb + + roidbs = [get_roidb(s) for s in imdb_names.split('+')] + roidb = roidbs[0] + if len(roidbs) > 1: + for r in roidbs[1:]: + roidb.extend(r) + imdb = datasets.imdb.imdb(imdb_names) + else: + imdb = get_imdb(imdb_names) + return imdb, roidb + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + if args.set_cfgs is not None: + cfg_from_list(args.set_cfgs) + + cfg.GPU_ID = args.gpu_id + + print('Using config:') + pprint.pprint(cfg) + + if not args.randomize: + # fix the random seeds (numpy and caffe) for reproducibility + np.random.seed(cfg.RNG_SEED) + caffe.set_random_seed(cfg.RNG_SEED) + + # set up caffe + #caffe.set_mode_gpu() + #caffe.set_device(args.gpu_id) + + imdb, roidb = combined_roidb(args.imdb_name) + print '{:d} roidb entries'.format(len(roidb)) + + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + + train_net(args.solver, roidb, output_dir, + pretrained_model=args.pretrained_model, + max_iters=args.max_iters) diff --git a/examples/rfcn/tools/train_rfcn_alt_opt_5stage.py b/examples/rfcn/tools/train_rfcn_alt_opt_5stage.py new file mode 100755 index 000000000..bc2ec655c --- /dev/null +++ b/examples/rfcn/tools/train_rfcn_alt_opt_5stage.py @@ -0,0 +1,477 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# R-FCN +# Copyright (c) 2016 Yuwen Xiong, Haozhi Qi +# Licensed under The MIT License [see LICENSE for details] +# -------------------------------------------------------- + +"""Train a R-FCN network using alternating optimization. +This tool implements the alternating optimization algorithm described in our +NIPS 2015 paper ("R-FCN: Towards Real-time Object Detection with Region +Proposal Networks." Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun.) +""" + +import _init_paths +from fast_rcnn.train import get_training_roidb, train_net +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list, get_output_dir +from datasets.factory import get_imdb +from rpn.generate import imdb_proposals, imdb_rpn_compute_stats +import argparse +import pprint +import numpy as np +import sys, os +import multiprocessing as mp +import cPickle +import shutil + + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Train a R-FCN network') + parser.add_argument('--gpu', dest='gpu_id', + help='GPU device id to use [0]', + default=0, type=int) + parser.add_argument('--net_name', dest='net_name', + help='network name (e.g., "ResNet-101")', + default=None, type=str) + parser.add_argument('--weights', dest='pretrained_model', + help='initialize with pretrained model weights', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', + default=None, type=str) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to train on', + default='voc_2007_trainval', type=str) + parser.add_argument('--imdb_test', dest='imdb_test_name', + help='dataset to test', + default='voc_2007_test', type=str) + parser.add_argument('--set', dest='set_cfgs', + help='set config keys', default=None, + nargs=argparse.REMAINDER) + parser.add_argument('--model', dest='model_name', + help='folder name of model', + default=None, type=str) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + + +def get_roidb(imdb_name, rpn_file=None): + imdb = get_imdb(imdb_name) + print 'Loaded dataset `{:s}` for training'.format(imdb.name) + imdb.set_proposal_method(cfg.TRAIN.PROPOSAL_METHOD) + print 'Set proposal method: {:s}'.format(cfg.TRAIN.PROPOSAL_METHOD) + if rpn_file is not None: + imdb.config['rpn_file'] = rpn_file + roidb = get_training_roidb(imdb) + return roidb, imdb + + +def get_solvers(imdb_name, net_name, model_name): + # R-FCN Alternating Optimization + # Solver for each training stage + if imdb_name.startswith('coco'): + solvers = [[net_name, model_name, 'stage1_rpn_solver360k480k.pt'], + [net_name, model_name, 'stage1_rfcn_ohem_solver360k480k.pt'], + [net_name, model_name, 'stage2_rpn_solver360k480k.pt'], + [net_name, model_name, 'stage2_rfcn_ohem_solver360k480k.pt'], + [net_name, model_name, 'stage3_rpn_solver360k480k.pt']] + solvers = [os.path.join('.', 'models', 'coco', *s) for s in solvers] + # Iterations for each training stage + max_iters = [480000, 480000, 480000, 480000, 480000] + # Test prototxt for the RPN + rpn_test_prototxt = os.path.join( + '.', 'models', 'coco', net_name, model_name, 'rpn_test.pt') + else: + solvers = [[net_name, model_name, 'stage1_rpn_solver60k80k.pt'], + [net_name, model_name, 'stage1_rfcn_ohem_solver80k120k.pt'], + [net_name, model_name, 'stage2_rpn_solver60k80k.pt'], + [net_name, model_name, 'stage2_rfcn_ohem_solver80k120k.pt'], + [net_name, model_name, 'stage3_rpn_solver60k80k.pt']] + solvers = [os.path.join(cfg.MODELS_DIR, *s) for s in solvers] + # Iterations for each training stage + max_iters = [80000, 120000, 80000, 120000, 80000] + # Test prototxt for the RPN + rpn_test_prototxt = os.path.join( + cfg.MODELS_DIR, net_name, model_name, 'rpn_test.pt') + return solvers, max_iters, rpn_test_prototxt + + +def _init_caffe(cfg): + """Initialize pycaffe in a training process. + """ + + import caffe + # fix the random seeds (numpy and caffe) for reproducibility + np.random.seed(cfg.RNG_SEED) + caffe.set_random_seed(cfg.RNG_SEED) + # set up caffe + caffe.set_mode_gpu() + caffe.set_device(cfg.GPU_ID) + + +def train_rpn(queue=None, imdb_name=None, init_model=None, solver=None, + max_iters=None, cfg=None, output_cache=None): + """Train a Region Proposal Network in a separate training process. + """ + + # Not using any proposals, just ground-truth boxes + cfg.TRAIN.HAS_RPN = True + cfg.TRAIN.BBOX_REG = False # applies only to R-FCN bbox regression + cfg.TRAIN.PROPOSAL_METHOD = 'gt' + cfg.TRAIN.IMS_PER_BATCH = 1 + print 'Init model: {}'.format(init_model) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + roidb, imdb = get_roidb(imdb_name) + print 'roidb len: {}'.format(len(roidb)) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + final_caffemodel = os.path.join(output_dir, output_cache) + + if os.path.exists(final_caffemodel): + queue.put({'model_path': final_caffemodel}) + else: + model_paths = train_net(solver, roidb, output_dir, + pretrained_model=init_model, + max_iters=max_iters) + # Cleanup all but the final model + for i in model_paths[:-1]: + os.remove(i) + rpn_model_path = model_paths[-1] + # Send final model path through the multiprocessing queue + shutil.copyfile(rpn_model_path, final_caffemodel) + queue.put({'model_path': final_caffemodel}) + + +def rpn_generate(queue=None, imdb_name=None, rpn_model_path=None, cfg=None, + rpn_test_prototxt=None): + """Use a trained RPN to generate proposals. + """ + + cfg.TEST.RPN_PRE_NMS_TOP_N = 6000 # no pre NMS filtering + cfg.TEST.RPN_POST_NMS_TOP_N = 300 # limit top boxes after NMS + print 'RPN model: {}'.format(rpn_model_path) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + # NOTE: the matlab implementation computes proposals on flipped images, too. + # We compute them on the image once and then flip the already computed + # proposals. This might cause a minor loss in mAP (less proposal jittering). + imdb = get_imdb(imdb_name) + print 'Loaded dataset `{:s}` for proposal generation'.format(imdb.name) + + # Load RPN and configure output directory + rpn_net = caffe.Net(rpn_test_prototxt, rpn_model_path, caffe.TEST) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + rpn_net_name = os.path.splitext(os.path.basename(rpn_model_path))[0] + rpn_proposals_path = os.path.join( + output_dir, rpn_net_name + '_proposals.pkl') + + # Generate proposals on the imdb + + # Write proposals to disk and send the proposal file path through the + # multiprocessing queue + if not os.path.exists(rpn_proposals_path): + rpn_proposals = imdb_proposals(rpn_net, imdb) + with open(rpn_proposals_path, 'wb') as f: + cPickle.dump(rpn_proposals, f, cPickle.HIGHEST_PROTOCOL) + queue.put({'proposal_path': rpn_proposals_path}) + print 'Wrote RPN proposals to {}'.format(rpn_proposals_path) + + +def train_rfcn(queue=None, imdb_name=None, init_model=None, solver=None, + max_iters=None, cfg=None, rpn_file=None, output_cache=None): + """Train a R-FCN using proposals generated by an RPN. + """ + + cfg.TRAIN.HAS_RPN = False # not generating prosals on-the-fly + cfg.TRAIN.PROPOSAL_METHOD = 'rpn' # use pre-computed RPN proposals instead + cfg.TRAIN.IMS_PER_BATCH = 1 + print 'Init model: {}'.format(init_model) + print 'RPN proposals: {}'.format(rpn_file) + print('Using config:') + pprint.pprint(cfg) + + import caffe + _init_caffe(cfg) + + roidb, imdb = get_roidb(imdb_name, rpn_file=rpn_file) + output_dir = get_output_dir(imdb) + print 'Output will be saved to `{:s}`'.format(output_dir) + # Train R-FCN + # Send R-FCN model path over the multiprocessing queue + final_caffemodel = os.path.join(output_dir, output_cache) + + if os.path.exists(final_caffemodel): + queue.put({'model_path': final_caffemodel}) + else: + model_paths = train_net(solver, roidb, output_dir, + pretrained_model=init_model, + max_iters=max_iters) + # Cleanup all but the final model + for i in model_paths[:-1]: + os.remove(i) + rfcn_model_path = model_paths[-1] + # Send final model path through the multiprocessing queue + shutil.copyfile(rfcn_model_path, final_caffemodel) + queue.put({'model_path': final_caffemodel}) + + +def rpn_compute_stats(queue=None, imdb_name=None, cfg=None, rpn_test_prototxt=None): + """Compute mean stds for anchors + """ + cfg.TRAIN.HAS_RPN = True + cfg.TRAIN.BBOX_REG = False # applies only to R-FCN bbox regression + cfg.TRAIN.PROPOSAL_METHOD = 'gt' + cfg.TRAIN.IMS_PER_BATCH = 1 + + import caffe + _init_caffe(cfg) + + # NOTE: the matlab implementation computes proposals on flipped images, too. + # We compute them on the image once and then flip the already computed + # proposals. This might cause a minor loss in mAP (less proposal jittering). + roidb, imdb = get_roidb(imdb_name) + print 'Loaded dataset `{:s}` for proposal generation'.format(imdb.name) + mean_file = os.path.join(imdb.cache_path, imdb.name + '_means.npy') + std_file = os.path.join(imdb.cache_path, imdb.name + '_stds.npy') + if os.path.exists(mean_file) and os.path.exists(std_file): + means = np.load(mean_file) + stds = np.load(std_file) + else: + # Load RPN and configure output directory + rpn_net = caffe.Net(rpn_test_prototxt, caffe.TEST) + # Generate proposals on the imdb + print 'start computing means/stds, it may take several minutes...' + if imdb_name.startswith('coco'): + means, stds = imdb_rpn_compute_stats(rpn_net, imdb, anchor_scales=(4, 8, 16, 32)) + else: + means, stds = imdb_rpn_compute_stats(rpn_net, imdb, anchor_scales=(8, 16, 32)) + np.save(mean_file, means) + np.save(std_file, stds) + queue.put({'means': means, 'stds': stds}) + + +if __name__ == '__main__': + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + if args.set_cfgs is not None: + cfg_from_list(args.set_cfgs) + cfg.GPU_ID = args.gpu_id + + # -------------------------------------------------------------------------- + # Pycaffe doesn't reliably free GPU memory when instantiated nets are + # discarded (e.g. "del net" in Python code). To work around this issue, each + # training stage is executed in a separate process using + # multiprocessing.Process. + # -------------------------------------------------------------------------- + + # queue for communicated results between processes + mp_queue = mp.Queue() + # solves, iters, etc. for each training stage + solvers, max_iters, rpn_test_prototxt = get_solvers(args.imdb_name, args.net_name, args.model_name) + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 0 RPN, compute normalization means and stds' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_compute_stats, kwargs=mp_kwargs) + p.start() + stage0_anchor_stats = mp_queue.get() + p.join() + cfg.TRAIN.RPN_NORMALIZE_MEANS = stage0_anchor_stats['means'] + cfg.TRAIN.RPN_NORMALIZE_STDS = stage0_anchor_stats['stds'] + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 RPN, init from ImageNet model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage1' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=args.pretrained_model, + solver=solvers[0], + max_iters=max_iters[0], + cfg=cfg, + output_cache='stage1_rpn_final.caffemodel') + p = mp.Process(target=train_rpn, kwargs=mp_kwargs) + p.start() + rpn_stage1_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 RPN, generate proposals' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + rpn_model_path=str(rpn_stage1_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage1_out['proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 RPN, generate proposals' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_test_name, + rpn_model_path=str(rpn_stage1_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage1_out['test_proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 1 R-FCN using RPN proposals, init from ImageNet model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage1' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=args.pretrained_model, + solver=solvers[1], + max_iters=max_iters[1], + cfg=cfg, + rpn_file=rpn_stage1_out['proposal_path'], + output_cache='stage1_rfcn_final.caffemodel') + p = mp.Process(target=train_rfcn, kwargs=mp_kwargs) + p.start() + rfcn_stage1_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 RPN, init from stage1 R-FCN model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage2' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=str(rfcn_stage1_out['model_path']), + solver=solvers[2], + max_iters=max_iters[2], + cfg=cfg, + output_cache='stage2_rpn_final.caffemodel') + p = mp.Process(target=train_rpn, kwargs=mp_kwargs) + p.start() + rpn_stage2_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 RPN, generate proposals' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + rpn_model_path=str(rpn_stage2_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage2_out['proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_test_name, + rpn_model_path=str(rpn_stage2_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage2_out['test_proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 2 R-FCN using Stage-2 RPN proposals, init from ImageNet model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage2' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=args.pretrained_model, + solver=solvers[3], + max_iters=max_iters[3], + cfg=cfg, + rpn_file=rpn_stage2_out['proposal_path'], + output_cache='stage2_rfcn_final.caffemodel') + p = mp.Process(target=train_rfcn, kwargs=mp_kwargs) + p.start() + rfcn_stage2_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 3 RPN, init from stage1 R-FCN model' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + cfg.TRAIN.SNAPSHOT_INFIX = 'stage3' + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_name, + init_model=str(rfcn_stage2_out['model_path']), + solver=solvers[4], + max_iters=max_iters[4], + cfg=cfg, + output_cache='stage3_rpn_final.caffemodel') + p = mp.Process(target=train_rpn, kwargs=mp_kwargs) + p.start() + rpn_stage3_out = mp_queue.get() + p.join() + + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + print 'Stage 3 RPN, generate test proposals only' + print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + + mp_kwargs = dict( + queue=mp_queue, + imdb_name=args.imdb_test_name, + rpn_model_path=str(rpn_stage3_out['model_path']), + cfg=cfg, + rpn_test_prototxt=rpn_test_prototxt) + p = mp.Process(target=rpn_generate, kwargs=mp_kwargs) + p.start() + rpn_stage3_out['test_proposal_path'] = mp_queue.get()['proposal_path'] + p.join() + + print 'Final model: {}'.format(str(rfcn_stage2_out['model_path'])) + print 'Final RPN: {}'.format(str(rpn_stage3_out['test_proposal_path'])) + + diff --git a/examples/rfcn/tools/train_svms.py b/examples/rfcn/tools/train_svms.py new file mode 100755 index 000000000..498bbf2a2 --- /dev/null +++ b/examples/rfcn/tools/train_svms.py @@ -0,0 +1,353 @@ +#!/usr/bin/env python + +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +""" +Train post-hoc SVMs using the algorithm and hyper-parameters from +traditional R-CNN. +""" + +import _init_paths +from fast_rcnn.config import cfg, cfg_from_file +from datasets.factory import get_imdb +from fast_rcnn.test import im_detect +from utils.timer import Timer +import caffe +import argparse +import pprint +import numpy as np +import numpy.random as npr +import cv2 +from sklearn import svm +import os, sys + +class SVMTrainer(object): + """ + Trains post-hoc detection SVMs for all classes using the algorithm + and hyper-parameters of traditional R-CNN. + """ + + def __init__(self, net, imdb): + self.imdb = imdb + self.net = net + self.layer = 'fc7' + self.hard_thresh = -1.0001 + self.neg_iou_thresh = 0.3 + + dim = net.params['cls_score'][0].data.shape[1] + scale = self._get_feature_scale() + print('Feature dim: {}'.format(dim)) + print('Feature scale: {:.3f}'.format(scale)) + self.trainers = [SVMClassTrainer(cls, dim, feature_scale=scale) + for cls in imdb.classes] + + def _get_feature_scale(self, num_images=100): + TARGET_NORM = 20.0 # Magic value from traditional R-CNN + _t = Timer() + roidb = self.imdb.roidb + total_norm = 0.0 + count = 0.0 + inds = npr.choice(xrange(self.imdb.num_images), size=num_images, + replace=False) + for i_, i in enumerate(inds): + im = cv2.imread(self.imdb.image_path_at(i)) + if roidb[i]['flipped']: + im = im[:, ::-1, :] + _t.tic() + scores, boxes = im_detect(self.net, im, roidb[i]['boxes']) + _t.toc() + feat = self.net.blobs[self.layer].data + total_norm += np.sqrt((feat ** 2).sum(axis=1)).sum() + count += feat.shape[0] + print('{}/{}: avg feature norm: {:.3f}'.format(i_ + 1, num_images, + total_norm / count)) + + return TARGET_NORM * 1.0 / (total_norm / count) + + def _get_pos_counts(self): + counts = np.zeros((len(self.imdb.classes)), dtype=np.int) + roidb = self.imdb.roidb + for i in xrange(len(roidb)): + for j in xrange(1, self.imdb.num_classes): + I = np.where(roidb[i]['gt_classes'] == j)[0] + counts[j] += len(I) + + for j in xrange(1, self.imdb.num_classes): + print('class {:s} has {:d} positives'. + format(self.imdb.classes[j], counts[j])) + + return counts + + def get_pos_examples(self): + counts = self._get_pos_counts() + for i in xrange(len(counts)): + self.trainers[i].alloc_pos(counts[i]) + + _t = Timer() + roidb = self.imdb.roidb + num_images = len(roidb) + # num_images = 100 + for i in xrange(num_images): + im = cv2.imread(self.imdb.image_path_at(i)) + if roidb[i]['flipped']: + im = im[:, ::-1, :] + gt_inds = np.where(roidb[i]['gt_classes'] > 0)[0] + gt_boxes = roidb[i]['boxes'][gt_inds] + _t.tic() + scores, boxes = im_detect(self.net, im, gt_boxes) + _t.toc() + feat = self.net.blobs[self.layer].data + for j in xrange(1, self.imdb.num_classes): + cls_inds = np.where(roidb[i]['gt_classes'][gt_inds] == j)[0] + if len(cls_inds) > 0: + cls_feat = feat[cls_inds, :] + self.trainers[j].append_pos(cls_feat) + + print 'get_pos_examples: {:d}/{:d} {:.3f}s' \ + .format(i + 1, len(roidb), _t.average_time) + + def initialize_net(self): + # Start all SVM parameters at zero + self.net.params['cls_score'][0].data[...] = 0 + self.net.params['cls_score'][1].data[...] = 0 + + # Initialize SVMs in a smart way. Not doing this because its such + # a good initialization that we might not learn something close to + # the SVM solution. +# # subtract background weights and biases for the foreground classes +# w_bg = self.net.params['cls_score'][0].data[0, :] +# b_bg = self.net.params['cls_score'][1].data[0] +# self.net.params['cls_score'][0].data[1:, :] -= w_bg +# self.net.params['cls_score'][1].data[1:] -= b_bg +# # set the background weights and biases to 0 (where they shall remain) +# self.net.params['cls_score'][0].data[0, :] = 0 +# self.net.params['cls_score'][1].data[0] = 0 + + def update_net(self, cls_ind, w, b): + self.net.params['cls_score'][0].data[cls_ind, :] = w + self.net.params['cls_score'][1].data[cls_ind] = b + + def train_with_hard_negatives(self): + _t = Timer() + roidb = self.imdb.roidb + num_images = len(roidb) + # num_images = 100 + for i in xrange(num_images): + im = cv2.imread(self.imdb.image_path_at(i)) + if roidb[i]['flipped']: + im = im[:, ::-1, :] + _t.tic() + scores, boxes = im_detect(self.net, im, roidb[i]['boxes']) + _t.toc() + feat = self.net.blobs[self.layer].data + for j in xrange(1, self.imdb.num_classes): + hard_inds = \ + np.where((scores[:, j] > self.hard_thresh) & + (roidb[i]['gt_overlaps'][:, j].toarray().ravel() < + self.neg_iou_thresh))[0] + if len(hard_inds) > 0: + hard_feat = feat[hard_inds, :].copy() + new_w_b = \ + self.trainers[j].append_neg_and_retrain(feat=hard_feat) + if new_w_b is not None: + self.update_net(j, new_w_b[0], new_w_b[1]) + + print(('train_with_hard_negatives: ' + '{:d}/{:d} {:.3f}s').format(i + 1, len(roidb), + _t.average_time)) + + def train(self): + # Initialize SVMs using + # a. w_i = fc8_w_i - fc8_w_0 + # b. b_i = fc8_b_i - fc8_b_0 + # c. Install SVMs into net + self.initialize_net() + + # Pass over roidb to count num positives for each class + # a. Pre-allocate arrays for positive feature vectors + # Pass over roidb, computing features for positives only + self.get_pos_examples() + + # Pass over roidb + # a. Compute cls_score with forward pass + # b. For each class + # i. Select hard negatives + # ii. Add them to cache + # c. For each class + # i. If SVM retrain criteria met, update SVM + # ii. Install new SVM into net + self.train_with_hard_negatives() + + # One final SVM retraining for each class + # Install SVMs into net + for j in xrange(1, self.imdb.num_classes): + new_w_b = self.trainers[j].append_neg_and_retrain(force=True) + self.update_net(j, new_w_b[0], new_w_b[1]) + +class SVMClassTrainer(object): + """Manages post-hoc SVM training for a single object class.""" + + def __init__(self, cls, dim, feature_scale=1.0, + C=0.001, B=10.0, pos_weight=2.0): + self.pos = np.zeros((0, dim), dtype=np.float32) + self.neg = np.zeros((0, dim), dtype=np.float32) + self.B = B + self.C = C + self.cls = cls + self.pos_weight = pos_weight + self.dim = dim + self.feature_scale = feature_scale + self.svm = svm.LinearSVC(C=C, class_weight={1: 2, -1: 1}, + intercept_scaling=B, verbose=1, + penalty='l2', loss='l1', + random_state=cfg.RNG_SEED, dual=True) + self.pos_cur = 0 + self.num_neg_added = 0 + self.retrain_limit = 2000 + self.evict_thresh = -1.1 + self.loss_history = [] + + def alloc_pos(self, count): + self.pos_cur = 0 + self.pos = np.zeros((count, self.dim), dtype=np.float32) + + def append_pos(self, feat): + num = feat.shape[0] + self.pos[self.pos_cur:self.pos_cur + num, :] = feat + self.pos_cur += num + + def train(self): + print('>>> Updating {} detector <<<'.format(self.cls)) + num_pos = self.pos.shape[0] + num_neg = self.neg.shape[0] + print('Cache holds {} pos examples and {} neg examples'. + format(num_pos, num_neg)) + X = np.vstack((self.pos, self.neg)) * self.feature_scale + y = np.hstack((np.ones(num_pos), + -np.ones(num_neg))) + self.svm.fit(X, y) + w = self.svm.coef_ + b = self.svm.intercept_[0] + scores = self.svm.decision_function(X) + pos_scores = scores[:num_pos] + neg_scores = scores[num_pos:] + + pos_loss = (self.C * self.pos_weight * + np.maximum(0, 1 - pos_scores).sum()) + neg_loss = self.C * np.maximum(0, 1 + neg_scores).sum() + reg_loss = 0.5 * np.dot(w.ravel(), w.ravel()) + 0.5 * b ** 2 + tot_loss = pos_loss + neg_loss + reg_loss + self.loss_history.append((tot_loss, pos_loss, neg_loss, reg_loss)) + + for i, losses in enumerate(self.loss_history): + print((' {:d}: obj val: {:.3f} = {:.3f} ' + '(pos) + {:.3f} (neg) + {:.3f} (reg)').format(i, *losses)) + + # Sanity check + scores_ret = ( + X * 1.0 / self.feature_scale).dot(w.T * self.feature_scale) + b + assert np.allclose(scores, scores_ret[:, 0], atol=1e-5), \ + "Scores from returned model don't match decision function" + + return ((w * self.feature_scale, b), pos_scores, neg_scores) + + def append_neg_and_retrain(self, feat=None, force=False): + if feat is not None: + num = feat.shape[0] + self.neg = np.vstack((self.neg, feat)) + self.num_neg_added += num + if self.num_neg_added > self.retrain_limit or force: + self.num_neg_added = 0 + new_w_b, pos_scores, neg_scores = self.train() + # scores = np.dot(self.neg, new_w_b[0].T) + new_w_b[1] + # easy_inds = np.where(neg_scores < self.evict_thresh)[0] + not_easy_inds = np.where(neg_scores >= self.evict_thresh)[0] + if len(not_easy_inds) > 0: + self.neg = self.neg[not_easy_inds, :] + # self.neg = np.delete(self.neg, easy_inds) + print(' Pruning easy negatives') + print(' Cache holds {} pos examples and {} neg examples'. + format(self.pos.shape[0], self.neg.shape[0])) + print(' {} pos support vectors'.format((pos_scores <= 1).sum())) + print(' {} neg support vectors'.format((neg_scores >= -1).sum())) + return new_w_b + else: + return None + +def parse_args(): + """ + Parse input arguments + """ + parser = argparse.ArgumentParser(description='Train SVMs (old skool)') + parser.add_argument('--gpu', dest='gpu_id', help='GPU device id to use [0]', + default=0, type=int) + parser.add_argument('--def', dest='prototxt', + help='prototxt file defining the network', + default=None, type=str) + parser.add_argument('--net', dest='caffemodel', + help='model to test', + default=None, type=str) + parser.add_argument('--cfg', dest='cfg_file', + help='optional config file', default=None, type=str) + parser.add_argument('--imdb', dest='imdb_name', + help='dataset to train on', + default='voc_2007_trainval', type=str) + + if len(sys.argv) == 1: + parser.print_help() + sys.exit(1) + + args = parser.parse_args() + return args + +if __name__ == '__main__': + # Must turn this off to prevent issues when digging into the net blobs to + # pull out features (tricky!) + cfg.DEDUP_BOXES = 0 + + # Must turn this on because we use the test im_detect() method to harvest + # hard negatives + cfg.TEST.SVM = True + + args = parse_args() + + print('Called with args:') + print(args) + + if args.cfg_file is not None: + cfg_from_file(args.cfg_file) + + print('Using config:') + pprint.pprint(cfg) + + # fix the random seed for reproducibility + np.random.seed(cfg.RNG_SEED) + + # set up caffe + caffe.set_mode_gpu() + if args.gpu_id is not None: + caffe.set_device(args.gpu_id) + net = caffe.Net(args.prototxt, args.caffemodel, caffe.TEST) + net.name = os.path.splitext(os.path.basename(args.caffemodel))[0] + out = os.path.splitext(os.path.basename(args.caffemodel))[0] + '_svm' + out_dir = os.path.dirname(args.caffemodel) + + imdb = get_imdb(args.imdb_name) + print 'Loaded dataset `{:s}` for training'.format(imdb.name) + + # enhance roidb to contain flipped examples + if cfg.TRAIN.USE_FLIPPED: + print 'Appending horizontally-flipped training examples...' + imdb.append_flipped_images() + print 'done' + + SVMTrainer(net, imdb).train() + + filename = '{}/{}.caffemodel'.format(out_dir, out) + net.save(filename) + print 'Wrote svm model to: {:s}'.format(filename) diff --git a/external/mkl/prepare_mkl.sh b/external/mkl/prepare_mkl.sh index f69e79423..708a746c3 100755 --- a/external/mkl/prepare_mkl.sh +++ b/external/mkl/prepare_mkl.sh @@ -85,11 +85,12 @@ VERSION_LINE=`GetVersionName $MKLROOT` # Check if MKLROOT is set if positive then set one will be used.. if [ -z $MKLROOT ] || [ $VERSION_LINE -lt $VERSION_MATCH ]; then # ..if MKLROOT is not set then check if we have MKL downloaded in proper version - VERSION_LINE=`GetVersionName $DST/$MKL_CONTENT_DIR` + VERSION_LINE=`GetVersionName $DST/mklml` if [ $VERSION_LINE -lt $VERSION_MATCH ] ; then #...If it is not then downloaded and unpacked wget --no-check-certificate -P $DST $MKLURL -O $DST/$ARCHIVE_BASENAME tar -xzf $DST/$ARCHIVE_BASENAME -C $DST + ln -sf $MKL_CONTENT_DIR $DST/mklml fi FindLibrary $DST MKLROOT=$PWD/`echo $LOCALMKL | sed -e 's/lib.*$//'` diff --git a/external/mlsl/prepare_mlsl.sh b/external/mlsl/prepare_mlsl.sh index a998c393f..1fb0b3290 100755 --- a/external/mlsl/prepare_mlsl.sh +++ b/external/mlsl/prepare_mlsl.sh @@ -1,7 +1,7 @@ #!/bin/sh # set -ex # -# All modification made by Intel Corporation: © 2016 Intel Corporation +# All modification made by Intel Corporation: © 2018 Intel Corporation # # This script is used to prepare the Intel® Machine Learning Scaling Library # @@ -58,22 +58,26 @@ fi } # Clean up the previous MLSL version -CleanUpPreviousMLSL2017_1_016() +# Can be used for l_mlsl_2017.1.016, l_mlsl_2017.2.018 +function CleanUpPreviousMLSL() { +version_year=$1 +version_num=$2 +subversion_num=$3 OLD_ARCHIVE_TARGZ=files.tar.gz -OLD_ARCHIVE_BASENAME=l_mlsl_2017.1.016.tgz -OLD_ARCHIVE_INSTALL_FOLDERNAME=l_mlsl_2017.1.016 +OLD_ARCHIVE_BASENAME=l_mlsl_$version_year.$version_num.$subversion_num.tgz +OLD_ARCHIVE_INSTALL_FOLDERNAME=l_mlsl_$version_year.$version_num.$subversion_num if [ -f $ABS_DST/$OLD_ARCHIVE_TARGZ ]; then rm $ABS_DST/$OLD_ARCHIVE_TARGZ #echo "[Debug] Delete old files.tar.gz!" fi if [ -f $ABS_DST/$OLD_ARCHIVE_BASENAME ]; then rm $ABS_DST/$OLD_ARCHIVE_BASENAME - #echo "[Debug] Delete old l_mlsl_2017.1.016.tgz file!" + #echo "[Debug] Delete old l_mlsl_$version_year.$version_num.$subversion_num.tgz file!" fi if [ -d $ABS_DST/$OLD_ARCHIVE_INSTALL_FOLDERNAME ]; then rm -rf $ABS_DST/$OLD_ARCHIVE_INSTALL_FOLDERNAME - #echo "[Debug] Delete old l_mlsl_2017.1.016 folder!" + #echo "[Debug] Delete old l_mlsl_$version_year.$version_num.$subversion_num folder!" fi } @@ -85,19 +89,21 @@ ABS_DST=`readlink -f $DST` #echo "[Debug] ABS_DST value: $ABS_DST" if [ -z $MLSL_ROOT ]; then + #l_mlsl_p_2017.0.014 version has the different structure, so keep a seprate version CleanUpPreviousMLSL2017_0_014 - CleanUpPreviousMLSL2017_1_016 + CleanUpPreviousMLSL 2017 1 016 + CleanUpPreviousMLSL 2017 2 018 fi -VERSION_MATCH=20172018 -ARCHIVE_BASENAME=l_mlsl_2017.2.018.tgz -ARCHIVE_INSTALL_FOLDERNAME=l_mlsl_2017.2.018 -#because the l_mlsl_2017.2.018.tgz will unpacked files.tar.gz and install.sh to the ARCHIVE_INSTALL_FOLDERNAME +VERSION_MATCH=20180003 +ARCHIVE_BASENAME=l_mlsl_2018.0.003.tgz +ARCHIVE_INSTALL_FOLDERNAME=l_mlsl_2018.0.003 +#because the l_mlsl_2018.0.003.tgz will unpacked files.tar.gz and install.sh to the ARCHIVE_INSTALL_FOLDERNAME #not unpacked to the DST folder (Different behavior against l_mlsl_p_2017.0.014.tgz) -ARCHIVE_INSTALL_FOLDERNAME_TEMP=l_mlsl_2017.2.018_temp +ARCHIVE_INSTALL_FOLDERNAME_TEMP=l_mlsl_2018.0.003_temp MLSL_CONTENT_DIR=`echo $ARCHIVE_BASENAME | rev | cut -d "." -f 2- | rev` #echo "[Debug] MLSL_CONTENT_DIR value: $MLSL_CONTENT_DIR" -GITHUB_RELEASE_TAG=v2017.2-Preview +GITHUB_RELEASE_TAG=v2018-Preview MLSLURL="https://github.com/01org/MLSL/releases/download/$GITHUB_RELEASE_TAG/$ARCHIVE_BASENAME" #echo "[Debug] MLSL_ROOT value: $MLSL_ROOT" @@ -126,14 +132,14 @@ if [ -z $MLSL_ROOT ] || [ $VERSION_LINE -lt $VERSION_MATCH ]; then wget --no-check-certificate -P $DST $MLSLURL -O $DST/$ARCHIVE_BASENAME if [ ! -d $DST/$ARCHIVE_INSTALL_FOLDERNAME_TEMP ]; then mkdir $DST/$ARCHIVE_INSTALL_FOLDERNAME_TEMP - #echo "[Debug] Create l_mlsl_2017.2.018_temp folder for unpacking!" + #echo "[Debug] Create l_mlsl_2018.0.003_temp folder for unpacking!" fi tar -xzf $DST/$ARCHIVE_BASENAME -C $DST/$ARCHIVE_INSTALL_FOLDERNAME_TEMP #echo "[Debug] PWD value: $PWD" #install.sh did not support the relative path as the parameter bash $DST/$ARCHIVE_INSTALL_FOLDERNAME_TEMP/$ARCHIVE_INSTALL_FOLDERNAME/install.sh -s -d $ABS_DST/$ARCHIVE_INSTALL_FOLDERNAME rm -rf $DST/$ARCHIVE_INSTALL_FOLDERNAME_TEMP - #echo "[Debug] Remove l_mlsl_2017.2.018_temp folder for unpacking!" + #echo "[Debug] Remove l_mlsl_2018.0.003_temp folder for unpacking!" fi #else: version is just our expected version, no need to donload again, but need to set the MLSL_ROOT #do not change the value of MLSL_ROOT if MLSL_ROOT is set, but version is not given diff --git a/include/caffe/blob.hpp b/include/caffe/blob.hpp index b1ee3f25a..97846daa6 100644 --- a/include/caffe/blob.hpp +++ b/include/caffe/blob.hpp @@ -254,6 +254,11 @@ class Blob { } const Dtype* cpu_data() const; +#ifdef CO_SIM + //These are APIs used for access data/diff without changing any CAFFE internal status. + Dtype* cpu_data_cosim() const; + Dtype* cpu_diff_cosim() const; +#endif void set_cpu_data(Dtype* data); void set_cpu_diff(Dtype* diff); diff --git a/include/caffe/data_reader.hpp b/include/caffe/data_reader.hpp index a4daa3cfd..c4a7551ea 100644 --- a/include/caffe/data_reader.hpp +++ b/include/caffe/data_reader.hpp @@ -86,6 +86,7 @@ class DataReader { class DBWrapper { public: explicit DBWrapper(const LayerParameter& param); + virtual ~DBWrapper(); virtual string value() = 0; virtual void Next() = 0; protected: diff --git a/include/caffe/engine_parser.hpp b/include/caffe/engine_parser.hpp index 1fa716e9b..7ab2302ef 100644 --- a/include/caffe/engine_parser.hpp +++ b/include/caffe/engine_parser.hpp @@ -85,6 +85,8 @@ class EngineParser { #endif LOG(FATAL) << "EngineParser: Unknown subengine: " << engineName; + // should never be here. it's used to eliminate a build warning #1011: missing return statement at end of non-void function. + return CpuEngine::Instance().get_engine(); } #endif diff --git a/include/caffe/mkl_memory.hpp b/include/caffe/mkl_memory.hpp index 3d9de8373..2accebc38 100644 --- a/include/caffe/mkl_memory.hpp +++ b/include/caffe/mkl_memory.hpp @@ -138,6 +138,10 @@ struct MKLMemoryDescriptorBase : PrvMemDescr, } virtual void convert_from_prv(void* cpu_ptr); virtual void convert_to_prv(void* cpu_ptr); +#ifdef CO_SIM + virtual void create_reorder_from_prv_cosim(void* cpu_ptr); + virtual void convert_from_prv_cosim(void* cpu_ptr); +#endif virtual bool layout_compare(shared_ptr other); virtual void convert_from_other(shared_ptr other); protected: diff --git a/include/caffe/mkldnn_memory.hpp b/include/caffe/mkldnn_memory.hpp index 850028ff5..7bb4a3ae2 100644 --- a/include/caffe/mkldnn_memory.hpp +++ b/include/caffe/mkldnn_memory.hpp @@ -212,6 +212,14 @@ class MKLDNNMemoryDescriptorBase : public PrvMemDescr shared_ptr _usr_memory; void* _cpu_ptr; +#ifdef CO_SIM + shared_ptr _usr_memory_cosim; + MKLDNNPrimitive _reorder_prv2usr_cosim; + //Used to save the copy of the private memory + shared_ptr _prv_memory_cosim; + //Wrapper for readonly_prv_memory + shared_ptr at_prv_cosim; +#endif MKLDNNLayer* _mkldnn_layer; Blob* _blob; std::vector _scale = std::vector(1,1.); @@ -243,6 +251,11 @@ class MKLDNNMemoryDescriptor : public MKLDNNMemoryDescriptorBase { virtual void convert_to_prv(void* cpu_ptr); virtual void convert_from_extprv(shared_ptr aprimitive); virtual bool on_to_cpu(); +#ifdef CO_SIM + + virtual void create_reorder_from_prv_cosim(void* cpu_ptr); + virtual void convert_from_prv_cosim(void* cpu_ptr); +#endif virtual void create_reorder_from_prv(void* cpu_ptr); virtual void create_reorder_to_prv(void* cpu_ptr); diff --git a/include/caffe/multinode/multi_solver.hpp b/include/caffe/multinode/multi_solver.hpp index bebab3c6c..c7de0d0cc 100644 --- a/include/caffe/multinode/multi_solver.hpp +++ b/include/caffe/multinode/multi_solver.hpp @@ -68,12 +68,12 @@ class MultiSolver { #endif } - // Invoked at specific points during an iteration class Callback : public Solver::Callback { protected: virtual ~Callback() { } + virtual void on_backward_finished(int layer_id) = 0; virtual void on_delwt_wait(int layer_id) = 0; virtual void apply_updates(int layer_id) = 0; @@ -104,17 +104,33 @@ class MultiSolver { boost::shared_ptr> root_solver() { return root_solver_; } + + void Backward(bool last=true); + Dtype Forward(); + void WaitAndUpdate(); + void ClearParamDiffs(); + #ifdef FW_OVERLAP_OPT void set_layer_finished_flag(int layer_id, bool flag) { layer_finished_flags_[layer_id] = flag; } + + Dtype UpdateAndForward(bool first=true); #endif + private: virtual Dtype ForwardBackwardImpl(bool first, bool last); bool IsSkipSyncGradient(int layer_id); bool WaitGradient(int layer_id); void UpdateGradient(int layer_id); + Dtype ForwardFromTo(int start, int end); + void BackwardFromTo(int start, int end, bool last=true); + +#ifdef FW_OVERLAP_OPT + void WaitAndUpdateBeforeFwd(int layer_id); +#endif + protected: boost::shared_ptr> root_solver_; int iter_size; diff --git a/include/caffe/multinode/multi_sync.hpp b/include/caffe/multinode/multi_sync.hpp index 969cb53ac..79d88b328 100644 --- a/include/caffe/multinode/multi_sync.hpp +++ b/include/caffe/multinode/multi_sync.hpp @@ -129,6 +129,9 @@ namespace caffe { virtual ~MultiSync() { } + boost::shared_ptr> get_solver() { + return solver; + } void synchronize_parameters() { LOG(INFO) << "synchronize_params: bcast"; @@ -187,7 +190,7 @@ namespace caffe { } } - void run() { + void init() { LOG(WARNING) << "RUN: " << "PER LAYER TIMINGS ARE" #ifdef CAFFE_PER_LAYER_TIMINGS @@ -223,6 +226,11 @@ namespace caffe { #endif solver->add_callback(this); + } + + void run() { + init(); + solver->Solve(); #ifdef PERFORMANCE_MONITORING @@ -231,6 +239,9 @@ namespace caffe { } void apply_updates(int layer_id) { + if (mn::use_param_server()) + return; + std::vector ¶m_ids = layer_param_ids[layer_id]; for (int i = 0; i < param_ids.size(); ++i) { solver->root_solver()->ApplyUpdate(param_ids[i]); @@ -266,25 +277,44 @@ namespace caffe { } } - void launch_reduce(int layer_id, int param_id) { + void launch_reduce(int layer_id) { mn::Distribution& distrib = layers[layer_id]->GetDistribution(); - Dtype* send_buff = NULL; - Dtype* recv_buff = NULL; - size_t buf_size = net_params[param_id]->count(); - if (CAN_USE_PRV_DIFF(net_params[param_id])) { - send_buff = (Dtype*)net_params[param_id]->prv_diff(); - recv_buff = net_params[param_id]->mutable_prv_diff(); - } - else { - send_buff = (Dtype*)net_params[param_id]->cpu_diff(); - recv_buff = net_params[param_id]->mutable_cpu_diff(); - } - reduce_req_vec[param_id] = - distrib.reduce_async( - send_buff, recv_buff, buf_size); - if (reduce_req_vec[param_id] != NULL && distrib.is_root(MLSL::GroupType::GT_DATA)) { - AsyncTask req_task(layer_id, param_id, NULL); - reduce_req_list.push_back(req_task); + boost::shared_ptr> &layer = layers[layer_id]; + std::vector ¶m_ids = layer_param_ids[layer_id]; + // TODO: descending is faster? + for (int i = param_ids.size() - 1; i >= 0; --i) { + if (!layer->ParamNeedReduce(i)) continue; + int param_id = param_ids[i]; + + if (mn::get_nodes_count() > 1) { + Dtype* send_buff = NULL; + Dtype* recv_buff = NULL; + size_t buf_size = net_params[param_id]->count(); + if (CAN_USE_PRV_DIFF(net_params[param_id])) { + send_buff = (Dtype*)net_params[param_id]->prv_diff(); + recv_buff = net_params[param_id]->mutable_prv_diff(); + } + else { + send_buff = (Dtype*)net_params[param_id]->cpu_diff(); + recv_buff = net_params[param_id]->mutable_cpu_diff(); + } + reduce_req_vec[param_id] = + distrib.reduce_async( + send_buff, recv_buff, buf_size); + bool complete = false; + DLOG(INFO) << "Launch reduce with param id " << param_id; + // progress communication ASAP + MLSL::Environment::GetEnv().Test(reduce_req_vec[param_id], &complete); + if (complete) { + // reset req to indicate no need to do Wait + reduce_req_vec[param_id] = NULL; + } + } + + if (distrib.is_root(MLSL::GroupType::GT_DATA)) { + AsyncTask req_task(layer_id, param_id, NULL); + reduce_req_list.push_back(req_task); + } } } @@ -298,13 +328,17 @@ namespace caffe { else { MLSL::Environment::GetEnv().Test(reduce_req_vec[iter->param_id], &complete); } + if (complete) { // reset req to indicate no need to do Wait reduce_req_vec[iter->param_id] = NULL; + int param_id = iter->param_id; + DLOG(INFO) << "Finish reduce on param id " << param_id + << " value " << net_params[param_id]->sumsq_diff(); + void* send_buff; void* recv_buff; - int param_id = iter->param_id; size_t buf_size = net_params[param_id]->count(); if (CAN_USE_PRV_DIFF(net_params[param_id] ) ) { @@ -319,6 +353,7 @@ namespace caffe { else { recv_buff = (void*)net_params[param_id]->mutable_cpu_data(); } + mn::Distribution &distrib = layers[iter->layer_id]->GetDistribution(); int server_mpi_rank = mn::param_to_server_rank(iter->layer_id, iter->param_id); mn::TaskRequest task( @@ -328,17 +363,24 @@ namespace caffe { int tag = task.GetTag(); MPI_Request send_req; int recv_flag = 1; - // recv from PS + // recv from PS MPI_Irecv(recv_buff, buf_size, mn::DtypeToMPIDtype(), server_mpi_rank, tag, MPI_COMM_WORLD, &irecv_req_vec[param_id]); MPI_Test(&irecv_req_vec[param_id], &recv_flag, MPI_STATUS_IGNORE); CHECK(!recv_flag); + DLOG(INFO) << "Receive data of param id " << param_id + << " from PS (rank " << server_mpi_rank << " and tag " << tag + << ")"; // Send to PS MPI_Isend(send_buff, buf_size, mn::DtypeToMPIDtype(), server_mpi_rank, tag, MPI_COMM_WORLD, &send_req); // TODO: why do we have to wait here? MPI_Wait(&send_req, MPI_STATUS_IGNORE); + DLOG(INFO) << "Send to PS of param id " << param_id + << " to PS (rank " << server_mpi_rank << " and tag " << tag + << ")"; + irecv_req_list.push_back(task); iter = reduce_req_list.erase(iter); } @@ -346,7 +388,10 @@ namespace caffe { } } - void launch_param_broadcast(int layer_id, int param_id) { + void launch_param_broadcast(int param_id) { + if (mn::get_nodes_count() <= 1) + return; + Dtype* buff; if (CAN_USE_PRV_DATA(net_params[param_id])) { if (distrib_bcast->is_root(MLSL::GroupType::GT_DATA)) @@ -361,6 +406,7 @@ namespace caffe { buff = net_params[param_id]->mutable_cpu_data(); } size_t buf_size = net_params[param_id]->count(); + DLOG(INFO) << "Launch broadcast request with param id " << param_id; broadcast_req_vec[param_id] = distrib_bcast->bcast_async(buff, buf_size); } @@ -376,6 +422,8 @@ namespace caffe { MPI_Test(&irecv_req_vec[param_id], &flag, MPI_STATUS_IGNORE); } if (flag) { + DLOG(INFO) << " Root node received model param id " << param_id + << " value " << net_params[param_id]->sumsq_data(); irecv_req_vec[param_id] = MPI_REQUEST_NULL; irecv_done[param_id] = true; iter = irecv_req_list.erase(iter); @@ -392,7 +440,7 @@ namespace caffe { int param_id = layer_param_ids[i][j]; if (!broadcast_launched[param_id]) { if (irecv_done[param_id]) { - launch_param_broadcast(i, param_id); + launch_param_broadcast(param_id); broadcast_launched[param_id] = true; } else return; } @@ -402,61 +450,83 @@ namespace caffe { void on_backward_finished(int layer_id) { boost::shared_ptr> &layer = layers[layer_id]; - if (layer->layerOp == nullptr) { - return; - } if (mn::use_param_server()) { - std::vector ¶m_ids = layer_param_ids[layer_id]; - // TODO: descending is faster? - for (int i = param_ids.size() - 1; i >= 0; --i) { - if (!layer->ParamNeedReduce(i)) continue; - launch_reduce(layer_id, param_ids[i]); - mn::Distribution &distrib = layer->GetDistribution(); - if (distrib.is_root(MLSL::GroupType::GT_DATA)) { - check_and_launch_comm_to_ps(); - check_and_launch_broadcast(); - } else { - launch_param_broadcast(layer_id, param_ids[i]); + launch_reduce(layer_id); + + mn::Distribution &distrib = layer->GetDistribution(); + if (distrib.is_root(MLSL::GroupType::GT_DATA)) { + check_and_launch_comm_to_ps(); + check_and_launch_broadcast(); + } else { + std::vector ¶m_ids = layer_param_ids[layer_id]; + for (int i=param_ids.size() - 1; i >= 0; --i) { + launch_param_broadcast(param_ids[i]); } } } else { + if (layer->layerOp == nullptr) { + return; + } launch_allreduce(layer_id); } } + + void delwt_wait_ps(int layer_id) { mn::Distribution &distrib = layers[layer_id]->GetDistribution(); + + std::vector ¶m_ids = layer_param_ids[layer_id]; if (distrib.is_root(MLSL::GroupType::GT_DATA)) { - std::vector ¶m_ids = layer_param_ids[layer_id]; - // TODO: can we start comm with ps earlier? Per-layer data would be inconsistent then. - check_and_launch_comm_to_ps(); - check_and_launch_broadcast(); - for (int i = param_ids.size() - 1; i >= 0; i--) { - int param_id = param_ids[i]; - // wait for reduce - if (reduce_req_vec[param_id] != NULL) { - MLSL::Environment::GetEnv().Wait(reduce_req_vec[param_id]); - } - reduce_req_vec[param_id] = NULL; - // wait for new param from param server - if (irecv_req_vec[param_id] != MPI_REQUEST_NULL) { - MPI_Wait(&irecv_req_vec[param_id], MPI_STATUS_IGNORE); - // the req is set to MPI_Request_NULL indicating the request is already finished - irecv_req_vec[param_id] = MPI_REQUEST_NULL; + bool bcast_launched = false; + while (!bcast_launched) { + // TODO: can we start comm with ps earlier? Per-layer data would be inconsistent then. + check_and_launch_comm_to_ps(); + check_and_launch_broadcast(); + bcast_launched = true; + for (int i = param_ids.size() - 1; i >= 0; i--) { + bcast_launched = bcast_launched & broadcast_launched[param_ids[i]]; } - irecv_done[param_id] = false; - // wait for the completion of broadcast - if (broadcast_req_vec[param_id] != NULL) { - MLSL::Environment::GetEnv().Wait(broadcast_req_vec[param_id]); - broadcast_req_vec[param_id] = NULL; - } - broadcast_launched[param_id] = false; } } + #ifdef FW_OVERLAP_OPT solver->set_layer_finished_flag(layer_id, true); #endif + + for (int i = param_ids.size() - 1; i >= 0; i--) { + int param_id = param_ids[i]; + DLOG(INFO) << " Wait reduce layer id " << layer_id << " param id " << param_id; + // wait for reduce + if (reduce_req_vec[param_id] != NULL) { + MLSL::Environment::GetEnv().Wait(reduce_req_vec[param_id]); + } + reduce_req_vec[param_id] = NULL; + + DLOG(INFO) << "Worker (iter " << solver->root_solver()->iter() << "): param id=" << param_id << " weight=" << net_params[param_id]->sumsq_diff(); + + DLOG(INFO) << " Wait recv layer id " << layer_id << " param id " << param_id; + + // wait for new param from param server + if (irecv_req_vec[param_id] != MPI_REQUEST_NULL) { + MPI_Wait(&irecv_req_vec[param_id], MPI_STATUS_IGNORE); + // the req is set to MPI_Request_NULL indicating the request is already finished + irecv_req_vec[param_id] = MPI_REQUEST_NULL; + } + irecv_done[param_id] = false; + + DLOG(INFO) << " Wait broadcast layer id " << layer_id << " param id " << param_id; + + // wait for the completion of broadcast + if (broadcast_req_vec[param_id] != NULL) { + MLSL::Environment::GetEnv().Wait(broadcast_req_vec[param_id]); + broadcast_req_vec[param_id] = NULL; + } + broadcast_launched[param_id] = false; + + DLOG(INFO) << "Worker (iter " << solver->root_solver()->iter() << "): param id=" << param_id << " data=" << net_params[param_id]->sumsq_data(); + } } void delwt_wait_no_ps(int layer_id) { diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index f27f24473..0d69f671b 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -287,7 +287,7 @@ class Net { * then scale layer can be dropped */ // TODO: Make it decent C++ anonymous function etc. - static void CompilationRuleOne(const NetParameter& param, + static void CompilationRuleRemoveScale(const NetParameter& param, NetParameter* param_compiled); /** * @brief This is rule that analyze layer if it is of type MKLDNNReLU and if that is the case @@ -296,7 +296,7 @@ class Net { */ - static void CompilationRuleTwo(const NetParameter& param, + static void CompilationRuleConvReluFusion(const NetParameter& param, NetParameter* param_compiled); /** @@ -304,14 +304,29 @@ class Net { * and is to perform in place computation * if positive then make it doing out-ofplace computation */ - static void CompilationRuleThree(const NetParameter& param, + static void CompilationRuleBNInplace(const NetParameter& param, NetParameter* param_compiled); /** * @brief This is rule analyze for conv/elt/relu fusion. */ - static void CompilationRuleFour(const NetParameter& param, + static void CompilationRuleConvSumFusion(const NetParameter& param, NetParameter* param_compiled); + + /** + * @brief This is rule analyze for general sparse. + */ + static void CompilationRuleSparse(const NetParameter& param, + NetParameter* param_compiled); + + /** + * @brief This is rule that analyze layer if it is of type MKLDNNReLU and if that is the case + * and previous layer which serves as input layer to MKLDNNReLU Layer is MKLDNNBN + * then MKLDNNReLU layer can be dropped + */ + static void CompilationRuleFuseBnRelu(const NetParameter& param, + NetParameter* param_compiled); + /** * @brief If find "Conv--BN--Scale" in current network, merge BN and Scale layer into Convolution * layers, this optimization only works in caffe TEST phase now. diff --git a/include/caffe/sgd_solvers.hpp b/include/caffe/sgd_solvers.hpp index 89df578a6..3e950ede1 100644 --- a/include/caffe/sgd_solvers.hpp +++ b/include/caffe/sgd_solvers.hpp @@ -143,8 +143,8 @@ class RMSPropSolver : public SGDSolver { protected: virtual void ComputeUpdateValue(int param_id, Dtype rate); void constructor_sanity_check() { - CHECK_EQ(0, this->param_.momentum()) - << "Momentum cannot be used with RMSProp."; +// CHECK_EQ(0, this->param_.momentum()) +// << "Momentum cannot be used with RMSProp."; CHECK_GE(this->param_.rms_decay(), 0) << "rms_decay should lie between 0 and 1."; CHECK_LT(this->param_.rms_decay(), 1) diff --git a/include/caffe/syncedmem.hpp b/include/caffe/syncedmem.hpp index 05ec1ecd8..5b6d869ed 100644 --- a/include/caffe/syncedmem.hpp +++ b/include/caffe/syncedmem.hpp @@ -130,6 +130,10 @@ struct PrvMemDescr { PRV_DESCR_MKLDNN }; virtual PrvDescrType get_descr_type() = 0; +#ifdef CO_SIM + virtual void create_reorder_from_prv_cosim(void* cpu_ptr) = 0; + virtual void convert_from_prv_cosim(void* cpu_ptr) = 0; +#endif }; /** @@ -144,12 +148,20 @@ class SyncedMemory { : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED), own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), own_prv_data_(false), - gpu_device_(-1) {} + gpu_device_(-1) +#ifdef CO_SIM + , cpu_ptr_cosim_(NULL), own_cpu_data_cosim_(false) +#endif + {} explicit SyncedMemory(size_t size) : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED), own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), own_prv_data_(false), - gpu_device_(-1) {} + gpu_device_(-1) +#ifdef CO_SIM + , cpu_ptr_cosim_(NULL), own_cpu_data_cosim_(false) +#endif + {} ~SyncedMemory(); void swap(shared_ptr other); const void* cpu_data(); @@ -159,6 +171,9 @@ class SyncedMemory { void* mutable_cpu_data(); void* mutable_gpu_data(); +#ifdef CO_SIM + const void * cpu_data_cosim(); +#endif const void* cpu_ptr() const { return cpu_ptr_; } shared_ptr prv_descriptor_; @@ -187,7 +202,11 @@ class SyncedMemory { bool own_prv_data_; int gpu_device_; boost::mutex mtx; - +#ifdef CO_SIM + void* cpu_ptr_cosim_; + void to_cpu_cosim(); + bool own_cpu_data_cosim_; +#endif DISABLE_COPY_AND_ASSIGN(SyncedMemory); }; // class SyncedMemory diff --git a/mkldnn.commit b/mkldnn.commit index 4925f6349..ab7cef75c 100644 --- a/mkldnn.commit +++ b/mkldnn.commit @@ -1 +1 @@ -ae00102be506ed0fe2099c6557df2aa88ad57ec1 \ No newline at end of file +464c268e544bae26f9b85a2acb9122c766a4c396 diff --git a/models/default_resnet_50/train_val.prototxt b/models/default_resnet_50/train_val.prototxt index 9b251c7f4..d81325c6f 100644 --- a/models/default_resnet_50/train_val.prototxt +++ b/models/default_resnet_50/train_val.prototxt @@ -3036,13 +3036,40 @@ layer { phase: TRAIN } } +#layer { +# name: "probt" +# type: "Softmax" +# bottom: "fc1000" +# top: "probt" +# include { +# phase: TEST +# } +#} +layer { + name: "accuracy/top-1" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "accuracy/top-1" + accuracy_param + { + top_k: 1 + } + include { + phase: TEST + } +} layer { - name: "probt" - type: "Softmax" - bottom: "fc1000" - top: "probt" - include { - phase: TEST + name: "accuracy/top-5" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "accuracy/top-5" + accuracy_param + { + top_k: 5 + } + include { + phase: TEST } } - diff --git a/models/intel_optimized_models/alexnet/bdw/solver_dummydata.prototxt b/models/intel_optimized_models/alexnet/bdw/solver_dummydata.prototxt deleted file mode 100644 index 79e5061f9..000000000 --- a/models/intel_optimized_models/alexnet/bdw/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/alexnet/bdw/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/alexnet/bdw/alexnet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/alexnet/knm/train_val_dummydata.prototxt b/models/intel_optimized_models/alexnet/knm/train_val_dummydata.prototxt deleted file mode 100644 index 36cb0de76..000000000 --- a/models/intel_optimized_models/alexnet/knm/train_val_dummydata.prototxt +++ /dev/null @@ -1,394 +0,0 @@ -name: "AlexNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 1024 dim: 3 dim: 224 dim: 224 } - shape: { dim: 1024 dim: 1 dim: 1 dim: 1 } - } -} -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 1024 dim: 3 dim: 224 dim: 224 } - shape: { dim: 1024 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1" - type: "Convolution" - bottom: "data" - top: "conv1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 11 - stride: 4 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu1" - type: "ReLU" - bottom: "conv1" - top: "conv1" -} -layer { - name: "norm1" - type: "LRN" - bottom: "conv1" - top: "norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool1" - type: "Pooling" - bottom: "norm1" - top: "pool1" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv2" - type: "Convolution" - bottom: "pool1" - top: "conv2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 2 - kernel_size: 5 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "conv2" - top: "conv2" -} -layer { - name: "norm2" - type: "LRN" - bottom: "conv2" - top: "norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2" - type: "Pooling" - bottom: "norm2" - top: "pool2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv3" - type: "Convolution" - bottom: "pool2" - top: "conv3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu3" - type: "ReLU" - bottom: "conv3" - top: "conv3" -} -layer { - name: "conv4" - type: "Convolution" - bottom: "conv3" - top: "conv4" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu4" - type: "ReLU" - bottom: "conv4" - top: "conv4" -} -layer { - name: "conv5" - type: "Convolution" - bottom: "conv4" - top: "conv5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu5" - type: "ReLU" - bottom: "conv5" - top: "conv5" -} -layer { - name: "pool5" - type: "Pooling" - bottom: "conv5" - top: "pool5" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "fc6" - type: "InnerProduct" - bottom: "pool5" - top: "fc6" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu6" - type: "ReLU" - bottom: "fc6" - top: "fc6" -} -layer { - name: "drop6" - type: "Dropout" - bottom: "fc6" - top: "fc6" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc7" - type: "InnerProduct" - bottom: "fc6" - top: "fc7" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu7" - type: "ReLU" - bottom: "fc7" - top: "fc7" -} -layer { - name: "drop7" - type: "Dropout" - bottom: "fc7" - top: "fc7" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc8" - type: "InnerProduct" - bottom: "fc7" - top: "fc8" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss" - type: "SoftmaxWithLoss" - bottom: "fc8" - bottom: "label" - top: "loss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/alexnet/skx/solver_dummydata.prototxt b/models/intel_optimized_models/alexnet/skx/solver_dummydata.prototxt deleted file mode 100644 index d7b5a2732..000000000 --- a/models/intel_optimized_models/alexnet/skx/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/alexnet/skx/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/alexnet/skx/alexnet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/alexnet/skx/train_val_dummydata.prototxt b/models/intel_optimized_models/alexnet/skx/train_val_dummydata.prototxt deleted file mode 100644 index bc064140e..000000000 --- a/models/intel_optimized_models/alexnet/skx/train_val_dummydata.prototxt +++ /dev/null @@ -1,394 +0,0 @@ -name: "AlexNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 1024 dim: 3 dim: 224 dim: 224 } - shape: { dim: 1024 dim: 1 dim: 1 dim: 1 } - } -} -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 512 dim: 3 dim: 224 dim: 224 } - shape: { dim: 512 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1" - type: "Convolution" - bottom: "data" - top: "conv1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 11 - stride: 4 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu1" - type: "ReLU" - bottom: "conv1" - top: "conv1" -} -layer { - name: "norm1" - type: "LRN" - bottom: "conv1" - top: "norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool1" - type: "Pooling" - bottom: "norm1" - top: "pool1" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv2" - type: "Convolution" - bottom: "pool1" - top: "conv2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 2 - kernel_size: 5 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "conv2" - top: "conv2" -} -layer { - name: "norm2" - type: "LRN" - bottom: "conv2" - top: "norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2" - type: "Pooling" - bottom: "norm2" - top: "pool2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv3" - type: "Convolution" - bottom: "pool2" - top: "conv3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu3" - type: "ReLU" - bottom: "conv3" - top: "conv3" -} -layer { - name: "conv4" - type: "Convolution" - bottom: "conv3" - top: "conv4" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu4" - type: "ReLU" - bottom: "conv4" - top: "conv4" -} -layer { - name: "conv5" - type: "Convolution" - bottom: "conv4" - top: "conv5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu5" - type: "ReLU" - bottom: "conv5" - top: "conv5" -} -layer { - name: "pool5" - type: "Pooling" - bottom: "conv5" - top: "pool5" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "fc6" - type: "InnerProduct" - bottom: "pool5" - top: "fc6" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu6" - type: "ReLU" - bottom: "fc6" - top: "fc6" -} -layer { - name: "drop6" - type: "Dropout" - bottom: "fc6" - top: "fc6" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc7" - type: "InnerProduct" - bottom: "fc6" - top: "fc7" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu7" - type: "ReLU" - bottom: "fc7" - top: "fc7" -} -layer { - name: "drop7" - type: "Dropout" - bottom: "fc7" - top: "fc7" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc8" - type: "InnerProduct" - bottom: "fc7" - top: "fc8" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss" - type: "SoftmaxWithLoss" - bottom: "fc8" - bottom: "label" - top: "loss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/alexnet/train_val_dummydata.prototxt b/models/intel_optimized_models/alexnet/train_val_dummydata.prototxt deleted file mode 100644 index fc47551c3..000000000 --- a/models/intel_optimized_models/alexnet/train_val_dummydata.prototxt +++ /dev/null @@ -1,394 +0,0 @@ -name: "AlexNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 256 dim: 3 dim: 224 dim: 224 } - shape: { dim: 256 dim: 1 dim: 1 dim: 1 } - } -} -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 256 dim: 3 dim: 224 dim: 224 } - shape: { dim: 256 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1" - type: "Convolution" - bottom: "data" - top: "conv1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 11 - stride: 4 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu1" - type: "ReLU" - bottom: "conv1" - top: "conv1" -} -layer { - name: "norm1" - type: "LRN" - bottom: "conv1" - top: "norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool1" - type: "Pooling" - bottom: "norm1" - top: "pool1" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv2" - type: "Convolution" - bottom: "pool1" - top: "conv2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 2 - kernel_size: 5 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "conv2" - top: "conv2" -} -layer { - name: "norm2" - type: "LRN" - bottom: "conv2" - top: "norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2" - type: "Pooling" - bottom: "norm2" - top: "pool2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "conv3" - type: "Convolution" - bottom: "pool2" - top: "conv3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "relu3" - type: "ReLU" - bottom: "conv3" - top: "conv3" -} -layer { - name: "conv4" - type: "Convolution" - bottom: "conv3" - top: "conv4" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu4" - type: "ReLU" - bottom: "conv4" - top: "conv4" -} -layer { - name: "conv5" - type: "Convolution" - bottom: "conv4" - top: "conv5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - group: 2 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu5" - type: "ReLU" - bottom: "conv5" - top: "conv5" -} -layer { - name: "pool5" - type: "Pooling" - bottom: "conv5" - top: "pool5" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "fc6" - type: "InnerProduct" - bottom: "pool5" - top: "fc6" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu6" - type: "ReLU" - bottom: "fc6" - top: "fc6" -} -layer { - name: "drop6" - type: "Dropout" - bottom: "fc6" - top: "fc6" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc7" - type: "InnerProduct" - bottom: "fc6" - top: "fc7" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 4096 - weight_filler { - type: "gaussian" - std: 0.005 - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "relu7" - type: "ReLU" - bottom: "fc7" - top: "fc7" -} -layer { - name: "drop7" - type: "Dropout" - bottom: "fc7" - top: "fc7" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "fc8" - type: "InnerProduct" - bottom: "fc7" - top: "fc8" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss" - type: "SoftmaxWithLoss" - bottom: "fc8" - bottom: "label" - top: "loss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc8" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/alexnet/knm/solver_dummydata.prototxt b/models/intel_optimized_models/benchmark/alexnet/solver.prototxt similarity index 80% rename from models/intel_optimized_models/alexnet/knm/solver_dummydata.prototxt rename to models/intel_optimized_models/benchmark/alexnet/solver.prototxt index 9cf1543c2..7cf67a129 100644 --- a/models/intel_optimized_models/alexnet/knm/solver_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/alexnet/solver.prototxt @@ -10,16 +10,14 @@ #Top-5: 80.4% #Top-1: 57.4% #Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/alexnet/knm/train_val_dummydata.prototxt" +net: "models/intel_optimized_models/benchmark/alexnet/train_val.prototxt" test_iter: 1000 test_interval: 10000 base_lr: 0.007 lr_policy: "poly" power: 0.6 -display: 1 -max_iter: 5000 +display: 20 +max_iter: 250000 momentum: 0.9 weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/alexnet/knm/alexnet_train" solver_mode: CPU diff --git a/models/intel_optimized_models/alexnet/solver_dummydata.prototxt b/models/intel_optimized_models/benchmark/alexnet/solver_dummydata.prototxt similarity index 83% rename from models/intel_optimized_models/alexnet/solver_dummydata.prototxt rename to models/intel_optimized_models/benchmark/alexnet/solver_dummydata.prototxt index 5c15e565e..8bf2a9bd4 100644 --- a/models/intel_optimized_models/alexnet/solver_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/alexnet/solver_dummydata.prototxt @@ -10,7 +10,7 @@ #Top-5: 80.4% #Top-1: 57.4% #Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/alexnet/train_val_dummydata.prototxt" +net: "models/intel_optimized_models/benchmark/alexnet/train_val_dummydata.prototxt" test_iter: 1000 test_interval: 10000 base_lr: 0.007 @@ -20,6 +20,4 @@ display: 1 max_iter: 200 momentum: 0.9 weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/alexnet/alexnet_train" solver_mode: CPU diff --git a/models/intel_optimized_models/alexnet/knl/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/alexnet/train_val.prototxt similarity index 88% rename from models/intel_optimized_models/alexnet/knl/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/alexnet/train_val.prototxt index fc47551c3..588b4ea7c 100644 --- a/models/intel_optimized_models/alexnet/knl/train_val_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/alexnet/train_val.prototxt @@ -1,39 +1,42 @@ name: "AlexNet" layer { name: "data" - type: "DummyData" + type: "Data" top: "data" top: "label" include { phase: TRAIN } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 256 dim: 3 dim: 224 dim: 224 } - shape: { dim: 256 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: true + crop_size: 227 + mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + } + data_param { + source: "examples/imagenet/ilsvrc12_train_lmdb" + batch_size: 256 + backend: LMDB } } layer { name: "data" - type: "DummyData" + type: "Data" top: "data" top: "label" include { phase: TEST } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 256 dim: 3 dim: 224 dim: 224 } - shape: { dim: 256 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: false + crop_size: 227 + mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + } + data_param { + source: "examples/imagenet/ilsvrc12_val_lmdb" + batch_size: 50 + backend: LMDB } } - layer { name: "conv1" type: "Convolution" @@ -363,32 +366,19 @@ layer { } } layer { - name: "loss" - type: "SoftmaxWithLoss" - bottom: "fc8" - bottom: "label" - top: "loss" -} -layer { - name: "loss3/top-1" + name: "accuracy" type: "Accuracy" bottom: "fc8" bottom: "label" - top: "loss3/top-1" + top: "accuracy" include { phase: TEST } } layer { - name: "loss3/top-5" - type: "Accuracy" + name: "loss" + type: "SoftmaxWithLoss" bottom: "fc8" bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } + top: "loss" } diff --git a/models/intel_optimized_models/alexnet/bdw/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/alexnet/train_val_dummydata.prototxt similarity index 100% rename from models/intel_optimized_models/alexnet/bdw/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/alexnet/train_val_dummydata.prototxt diff --git a/models/intel_optimized_models/benchmark/googlenet/solver.prototxt b/models/intel_optimized_models/benchmark/googlenet/solver.prototxt new file mode 100644 index 000000000..b3f23ec95 --- /dev/null +++ b/models/intel_optimized_models/benchmark/googlenet/solver.prototxt @@ -0,0 +1,13 @@ +net: "models/intel_optimized_models/benchmark/googlenet/train_val.prototxt" +test_iter: 1000 +test_interval: 10000 +test_initialization: false +display: 40 +average_loss: 40 +base_lr: 0.012 +lr_policy: "poly" +power: 0.5 +max_iter: 800000 +momentum: 0.9 +weight_decay: 0.0002 +solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/solver_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet/solver_dummydata.prototxt similarity index 82% rename from models/intel_optimized_models/googlenet/solver_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet/solver_dummydata.prototxt index 02ce2018a..f6581d24d 100644 --- a/models/intel_optimized_models/googlenet/solver_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/googlenet/solver_dummydata.prototxt @@ -10,7 +10,7 @@ #Top-5: 80.4% #Top-1: 57.4% #Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet/train_val_dummydata.prototxt" +net: "models/intel_optimized_models/benchmark/googlenet/train_val_dummydata.prototxt" test_iter: 1000 test_interval: 10000 base_lr: 0.007 @@ -20,6 +20,4 @@ display: 1 max_iter: 200 momentum: 0.9 weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet/googlenet_train" solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/knl/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet/train_val.prototxt similarity index 96% rename from models/intel_optimized_models/googlenet/knl/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet/train_val.prototxt index 602416008..6f9b6fded 100644 --- a/models/intel_optimized_models/googlenet/knl/train_val_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/googlenet/train_val.prototxt @@ -1,40 +1,46 @@ name: "GoogleNet" layer { name: "data" - type: "DummyData" + type: "Data" top: "data" top: "label" include { phase: TRAIN } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: true + crop_size: 224 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "examples/imagenet/ilsvrc12_train_lmdb" + batch_size: 96 + backend: LMDB } } - layer { name: "data" - type: "DummyData" + type: "Data" top: "data" top: "label" include { phase: TEST } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: false + crop_size: 224 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "examples/imagenet/ilsvrc12_val_lmdb" + batch_size: 50 + backend: LMDB } } - layer { name: "conv1/7x7_s2" type: "Convolution" @@ -58,7 +64,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -111,7 +117,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -143,7 +149,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -196,7 +202,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -227,7 +233,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -259,7 +265,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -290,7 +296,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -322,7 +328,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -365,7 +371,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -405,7 +411,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -436,7 +442,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -468,7 +474,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -499,7 +505,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -531,7 +537,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -574,7 +580,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -625,7 +631,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -656,7 +662,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -688,7 +694,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -719,7 +725,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -751,7 +757,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -794,7 +800,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -845,7 +851,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -875,7 +881,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -970,7 +976,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1001,7 +1007,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1033,7 +1039,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1064,7 +1070,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1096,7 +1102,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1139,7 +1145,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1179,7 +1185,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1210,7 +1216,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1242,7 +1248,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1273,7 +1279,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1305,7 +1311,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1348,7 +1354,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1388,7 +1394,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1419,7 +1425,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1451,7 +1457,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1482,7 +1488,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1514,7 +1520,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1557,7 +1563,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1608,7 +1614,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1638,7 +1644,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1733,7 +1739,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1764,7 +1770,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1796,7 +1802,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1827,7 +1833,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1859,7 +1865,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1902,7 +1908,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1953,7 +1959,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -1984,7 +1990,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2016,7 +2022,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2047,7 +2053,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2079,7 +2085,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2122,7 +2128,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2162,7 +2168,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2193,7 +2199,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2225,7 +2231,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2256,7 +2262,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2288,7 +2294,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } @@ -2331,7 +2337,7 @@ layer { } bias_filler { type: "constant" - value: 0.1 + value: 0.2 } } } diff --git a/models/intel_optimized_models/googlenet/bdw/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet/train_val_dummydata.prototxt similarity index 100% rename from models/intel_optimized_models/googlenet/bdw/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet/train_val_dummydata.prototxt diff --git a/models/intel_optimized_models/benchmark/googlenet_v2/solver.prototxt b/models/intel_optimized_models/benchmark/googlenet_v2/solver.prototxt new file mode 100644 index 000000000..7dff4c658 --- /dev/null +++ b/models/intel_optimized_models/benchmark/googlenet_v2/solver.prototxt @@ -0,0 +1,14 @@ +net: "models/intel_optimized_models/benchmark/googlenet_v2/train_val.prototxt" +test_iter: 1000 +test_interval: 10000 +test_initialization: false +display: 40 +average_loss: 40 +base_lr: 0.045 +lr_policy: "step" +stepsize: 2133 +gamma: 0.96 +max_iter: 400000 +momentum: 0.9 +weight_decay: 0.0002 +solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/solver_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet_v2/solver_dummydata.prototxt similarity index 82% rename from models/intel_optimized_models/resnet_50/solver_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet_v2/solver_dummydata.prototxt index 3ba69689f..736c3f7a6 100644 --- a/models/intel_optimized_models/resnet_50/solver_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/googlenet_v2/solver_dummydata.prototxt @@ -10,7 +10,7 @@ #Top-5: 80.4% #Top-1: 57.4% #Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/resnet_50/train_val_dummydata.prototxt" +net: "models/intel_optimized_models/benchmark/googlenet_v2/train_val_dummydata.prototxt" test_iter: 1000 test_interval: 10000 base_lr: 0.007 @@ -20,6 +20,4 @@ display: 1 max_iter: 5000 momentum: 0.9 weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/resnet_50/resnet_50_train" solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/knl/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet_v2/train_val.prototxt similarity index 99% rename from models/intel_optimized_models/googlenet_v2/knl/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet_v2/train_val.prototxt index 28a89b023..e54132adb 100644 --- a/models/intel_optimized_models/googlenet_v2/knl/train_val_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/googlenet_v2/train_val.prototxt @@ -2,44 +2,54 @@ name: "InceptionNetwork" ### Training Set layer { - name: "data" - type: "DummyData" top: "data" top: "label" + name: "data" + type: "Data" + data_param { + source: "examples/imagenet/ilsvrc12_train_lmdb" + batch_size: 96 + backend: LMDB +# shuffle: true + } include { phase: TRAIN } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 96 dim: 3 dim: 224 dim: 224 } - shape: { dim: 96 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: true + crop_size: 224 +# mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + mean_value: 104 + mean_value: 117 + mean_value: 123 } } - ### Validation Set layer { - name: "data" - type: "DummyData" top: "data" top: "label" + name: "data" + type: "Data" + data_param { + source: "examples/imagenet/ilsvrc12_val_lmdb" + batch_size: 32 + backend: LMDB + } include { phase: TEST } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 192 dim: 3 dim: 224 dim: 224 } - shape: { dim: 192 dim: 1 dim: 1 dim: 1 } + transform_param { + mirror: false + crop_size: 224 +# mean_file: "data/ilsvrc12/imagenet_mean.binaryproto" + mean_value: 104 + mean_value: 117 + mean_value: 123 } } layer { - bottom: "data" + bottom: "data" top: "conv1/7x7_s2" name: "conv1/7x7_s2" type: "Convolution" diff --git a/models/intel_optimized_models/googlenet_v2/bdw/train_val_dummydata.prototxt b/models/intel_optimized_models/benchmark/googlenet_v2/train_val_dummydata.prototxt similarity index 100% rename from models/intel_optimized_models/googlenet_v2/bdw/train_val_dummydata.prototxt rename to models/intel_optimized_models/benchmark/googlenet_v2/train_val_dummydata.prototxt diff --git a/models/intel_optimized_models/resnet_50/solver.prototxt b/models/intel_optimized_models/benchmark/resnet_50/solver.prototxt similarity index 86% rename from models/intel_optimized_models/resnet_50/solver.prototxt rename to models/intel_optimized_models/benchmark/resnet_50/solver.prototxt index 5693483fd..8f3161e6f 100644 --- a/models/intel_optimized_models/resnet_50/solver.prototxt +++ b/models/intel_optimized_models/benchmark/resnet_50/solver.prototxt @@ -1,5 +1,5 @@ #The prototxt files(solver.prototxt and train_val.prototxt) are copied from "models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch", temporarily used for throughput benchmarking. It can't achieve expected accuracy for training. We'll provide the files for single node training in the future. -net: "models/intel_optimized_models/resnet_50/train_val.prototxt" +net: "models/intel_optimized_models/benchmark/resnet_50/train_val.prototxt" test_iter: 1000 test_interval: 625 test_initialization: false diff --git a/models/intel_optimized_models/alexnet/knl/solver_dummydata.prototxt b/models/intel_optimized_models/benchmark/resnet_50/solver_dummydata.prototxt similarity index 82% rename from models/intel_optimized_models/alexnet/knl/solver_dummydata.prototxt rename to models/intel_optimized_models/benchmark/resnet_50/solver_dummydata.prototxt index b10739bff..61454437d 100644 --- a/models/intel_optimized_models/alexnet/knl/solver_dummydata.prototxt +++ b/models/intel_optimized_models/benchmark/resnet_50/solver_dummydata.prototxt @@ -10,7 +10,7 @@ #Top-5: 80.4% #Top-1: 57.4% #Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/alexnet/knl/train_val_dummydata.prototxt" +net: "models/intel_optimized_models/benchmark/resnet_50/train_val_dummydata.prototxt" test_iter: 1000 test_interval: 10000 base_lr: 0.007 @@ -20,6 +20,4 @@ display: 1 max_iter: 5000 momentum: 0.9 weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/alexnet/knl/alexnet_train" solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/train_val.prototxt b/models/intel_optimized_models/benchmark/resnet_50/train_val.prototxt similarity index 99% rename from models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/train_val.prototxt rename to models/intel_optimized_models/benchmark/resnet_50/train_val.prototxt index 3dd57aaac..de4efad2b 100644 --- a/models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/train_val.prototxt +++ b/models/intel_optimized_models/benchmark/resnet_50/train_val.prototxt @@ -783,7 +783,7 @@ layer { num_output: 128 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -841,7 +841,7 @@ layer { num_output: 128 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -1569,7 +1569,7 @@ layer { num_output: 256 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -1627,7 +1627,7 @@ layer { num_output: 256 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -2727,7 +2727,7 @@ layer { num_output: 512 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -2785,7 +2785,7 @@ layer { num_output: 512 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -3302,6 +3302,9 @@ layer { top: "loss" name: "prob" type: "SoftmaxWithLoss" + include { + phase: TRAIN + } } layer { name: "loss3/top-1" diff --git a/models/intel_optimized_models/multinode/resnet_50_8_nodes/train_val.prototxt b/models/intel_optimized_models/benchmark/resnet_50/train_val_dummydata.prototxt similarity index 92% rename from models/intel_optimized_models/multinode/resnet_50_8_nodes/train_val.prototxt rename to models/intel_optimized_models/benchmark/resnet_50/train_val_dummydata.prototxt index 75bff6269..d9172b0c9 100644 --- a/models/intel_optimized_models/multinode/resnet_50_8_nodes/train_val.prototxt +++ b/models/intel_optimized_models/benchmark/resnet_50/train_val_dummydata.prototxt @@ -1,3322 +1,3298 @@ -name: "ResNet-50" -bn_stats_batch_size: 32 -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TRAIN - } - transform_param { - mirror: true - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_aspect_ratio_param { - min_area_ratio: 0.08 - max_area_ratio: 1 - aspect_ratio_change: 0.75 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_train_lmdb" - batch_size: 128 - backend: LMDB - prefetch: 2 - shuffle: true - } -} -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TEST - } - transform_param { - mirror: false - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_resize_param { - min_size: 256 - max_size: 256 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_val_lmdb" - batch_size: 50 - backend: LMDB - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "msra" - variance_norm: FAN_OUT - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c" - top: "res3a_branch2a" - name: "res3a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "loss" - name: "prob" - type: "SoftmaxWithLoss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - accuracy_param { - top_k: 5 - } -} +name: "ResNet-50" +layer { + name: "data" + type: "DummyData" + top: "data" + top: "label" + include { + phase: TRAIN + } + dummy_data_param { + data_filler { + type: "constant" + value: 0.01 + } + shape: { dim: 32 dim: 3 dim: 224 dim: 224 } + shape: { dim: 32 dim: 1 dim: 1 dim: 1 } + } +} + +layer { + name: "data" + type: "DummyData" + top: "data" + top: "label" + include { + phase: TEST + } + dummy_data_param { + data_filler { + type: "constant" + value: 0.01 + } + shape: { dim: 32 dim: 3 dim: 224 dim: 224 } + shape: { dim: 32 dim: 1 dim: 1 dim: 1 } + } +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + weight_filler { + type: "msra" + variance_norm: FAN_OUT + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" + relu_param { + } +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "res2a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2b" + name: "res2a_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "res2a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch1" + bottom: "res2a_branch2c" + top: "res2a" + name: "res2a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2a" + top: "res2a" + name: "res2a_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "res2b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2b" + name: "res2b_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "res2b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a" + bottom: "res2b_branch2c" + top: "res2b" + name: "res2b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2b" + top: "res2b" + name: "res2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "res2c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2b" + name: "res2c_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "res2c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "res3a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2b" + name: "res3a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "res3a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch1" + bottom: "res3a_branch2c" + top: "res3a" + name: "res3a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3a" + top: "res3a" + name: "res3a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3a" + top: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "res4a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2b" + name: "res4a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "res4a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch1" + bottom: "res4a_branch2c" + top: "res4a" + name: "res4a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4a" + top: "res4a" + name: "res4a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4a" + top: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "res5a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2b" + name: "res5a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "res5a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch1" + bottom: "res5a_branch2c" + top: "res5a" + name: "res5a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res5a" + top: "res5a" + name: "res5a_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "res5b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2b" + name: "res5b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "res5b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a" + bottom: "res5b_branch2c" + top: "res5b" + name: "res5b" + type: "Eltwise" + eltwise_param { + } +} + +layer { + bottom: "res5b" + top: "res5b" + name: "res5b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "res5c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2b" + name: "res5c_branch2b" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" + relu_param { + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" + eltwise_param { + } +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5c" + top: "pool5" + name: "pool5" + type: "Pooling" + pooling_param { + kernel_size: 7 + stride: 1 + pool: AVE + } +} + +layer { + bottom: "pool5" + top: "fc1000" + name: "fc1000" + type: "InnerProduct" + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "fc1000" + bottom: "label" + top: "loss" + name: "prob" + type: "SoftmaxWithLoss" + include { + phase: TRAIN + } +} +layer { + name: "loss3/top-1" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "loss3/top-1" +} +layer { + name: "loss3/top-5" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "loss3/top-5" + accuracy_param { + top_k: 5 + } +} diff --git a/models/intel_optimized_models/googlenet/bdw/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet/bdw/solver_dummydata.prototxt deleted file mode 100644 index 87411ad22..000000000 --- a/models/intel_optimized_models/googlenet/bdw/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet/bdw/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet/bdw/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/knl/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet/knl/solver_dummydata.prototxt deleted file mode 100644 index f45255f93..000000000 --- a/models/intel_optimized_models/googlenet/knl/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet/knl/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet/knl/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/knm/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet/knm/solver_dummydata.prototxt deleted file mode 100644 index 7456d6748..000000000 --- a/models/intel_optimized_models/googlenet/knm/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet/knm/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet/knm/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/knm/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet/knm/train_val_dummydata.prototxt deleted file mode 100644 index 602416008..000000000 --- a/models/intel_optimized_models/googlenet/knm/train_val_dummydata.prototxt +++ /dev/null @@ -1,2427 +0,0 @@ -name: "GoogleNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1/7x7_s2" - type: "Convolution" - bottom: "data" - top: "conv1/7x7_s2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv1/relu_7x7" - type: "ReLU" - bottom: "conv1/7x7_s2" - top: "conv1/7x7_s2" -} -layer { - name: "pool1/3x3_s2" - type: "Pooling" - bottom: "conv1/7x7_s2" - top: "pool1/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "pool1/norm1" - type: "LRN" - bottom: "pool1/3x3_s2" - top: "pool1/norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "conv2/3x3_reduce" - type: "Convolution" - bottom: "pool1/norm1" - top: "conv2/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3_reduce" - type: "ReLU" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3_reduce" -} -layer { - name: "conv2/3x3" - type: "Convolution" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3" - type: "ReLU" - bottom: "conv2/3x3" - top: "conv2/3x3" -} -layer { - name: "conv2/norm2" - type: "LRN" - bottom: "conv2/3x3" - top: "conv2/norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2/3x3_s2" - type: "Pooling" - bottom: "conv2/norm2" - top: "pool2/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_3a/1x1" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_1x1" - type: "ReLU" - bottom: "inception_3a/1x1" - top: "inception_3a/1x1" -} -layer { - name: "inception_3a/3x3_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3_reduce" -} -layer { - name: "inception_3a/3x3" - type: "Convolution" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3" - type: "ReLU" - bottom: "inception_3a/3x3" - top: "inception_3a/3x3" -} -layer { - name: "inception_3a/5x5_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5_reduce" -} -layer { - name: "inception_3a/5x5" - type: "Convolution" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5" - type: "ReLU" - bottom: "inception_3a/5x5" - top: "inception_3a/5x5" -} -layer { - name: "inception_3a/pool" - type: "Pooling" - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3a/pool_proj" - type: "Convolution" - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_pool_proj" - type: "ReLU" - bottom: "inception_3a/pool_proj" - top: "inception_3a/pool_proj" -} -layer { - name: "inception_3a/output" - type: "Concat" - bottom: "inception_3a/1x1" - bottom: "inception_3a/3x3" - bottom: "inception_3a/5x5" - bottom: "inception_3a/pool_proj" - top: "inception_3a/output" -} -layer { - name: "inception_3b/1x1" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_1x1" - type: "ReLU" - bottom: "inception_3b/1x1" - top: "inception_3b/1x1" -} -layer { - name: "inception_3b/3x3_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3_reduce" -} -layer { - name: "inception_3b/3x3" - type: "Convolution" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3" - type: "ReLU" - bottom: "inception_3b/3x3" - top: "inception_3b/3x3" -} -layer { - name: "inception_3b/5x5_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5_reduce" -} -layer { - name: "inception_3b/5x5" - type: "Convolution" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5" - type: "ReLU" - bottom: "inception_3b/5x5" - top: "inception_3b/5x5" -} -layer { - name: "inception_3b/pool" - type: "Pooling" - bottom: "inception_3a/output" - top: "inception_3b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3b/pool_proj" - type: "Convolution" - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_pool_proj" - type: "ReLU" - bottom: "inception_3b/pool_proj" - top: "inception_3b/pool_proj" -} -layer { - name: "inception_3b/output" - type: "Concat" - bottom: "inception_3b/1x1" - bottom: "inception_3b/3x3" - bottom: "inception_3b/5x5" - bottom: "inception_3b/pool_proj" - top: "inception_3b/output" -} -layer { - name: "pool3/3x3_s2" - type: "Pooling" - bottom: "inception_3b/output" - top: "pool3/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_4a/1x1" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_1x1" - type: "ReLU" - bottom: "inception_4a/1x1" - top: "inception_4a/1x1" -} -layer { - name: "inception_4a/3x3_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3_reduce" -} -layer { - name: "inception_4a/3x3" - type: "Convolution" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 208 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3" - type: "ReLU" - bottom: "inception_4a/3x3" - top: "inception_4a/3x3" -} -layer { - name: "inception_4a/5x5_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5_reduce" -} -layer { - name: "inception_4a/5x5" - type: "Convolution" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5" - type: "ReLU" - bottom: "inception_4a/5x5" - top: "inception_4a/5x5" -} -layer { - name: "inception_4a/pool" - type: "Pooling" - bottom: "pool3/3x3_s2" - top: "inception_4a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4a/pool_proj" - type: "Convolution" - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_pool_proj" - type: "ReLU" - bottom: "inception_4a/pool_proj" - top: "inception_4a/pool_proj" -} -layer { - name: "inception_4a/output" - type: "Concat" - bottom: "inception_4a/1x1" - bottom: "inception_4a/3x3" - bottom: "inception_4a/5x5" - bottom: "inception_4a/pool_proj" - top: "inception_4a/output" -} -layer { - name: "loss1/ave_pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "loss1/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss1/conv" - type: "Convolution" - bottom: "loss1/ave_pool" - top: "loss1/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_conv" - type: "ReLU" - bottom: "loss1/conv" - top: "loss1/conv" -} -layer { - name: "loss1/fc" - type: "InnerProduct" - bottom: "loss1/conv" - top: "loss1/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_fc" - type: "ReLU" - bottom: "loss1/fc" - top: "loss1/fc" -} -layer { - name: "loss1/drop_fc" - type: "Dropout" - bottom: "loss1/fc" - top: "loss1/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss1/classifier" - type: "InnerProduct" - bottom: "loss1/fc" - top: "loss1/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss1/loss" - type: "SoftmaxWithLoss" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss1" - loss_weight: 0.3 -} -layer { - name: "loss1/top-1" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-1" - include { - phase: TEST - } -} -layer { - name: "loss1/top-5" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4b/1x1" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_1x1" - type: "ReLU" - bottom: "inception_4b/1x1" - top: "inception_4b/1x1" -} -layer { - name: "inception_4b/3x3_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3_reduce" -} -layer { - name: "inception_4b/3x3" - type: "Convolution" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 224 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3" - type: "ReLU" - bottom: "inception_4b/3x3" - top: "inception_4b/3x3" -} -layer { - name: "inception_4b/5x5_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5_reduce" -} -layer { - name: "inception_4b/5x5" - type: "Convolution" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5" - type: "ReLU" - bottom: "inception_4b/5x5" - top: "inception_4b/5x5" -} -layer { - name: "inception_4b/pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "inception_4b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4b/pool_proj" - type: "Convolution" - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_pool_proj" - type: "ReLU" - bottom: "inception_4b/pool_proj" - top: "inception_4b/pool_proj" -} -layer { - name: "inception_4b/output" - type: "Concat" - bottom: "inception_4b/1x1" - bottom: "inception_4b/3x3" - bottom: "inception_4b/5x5" - bottom: "inception_4b/pool_proj" - top: "inception_4b/output" -} -layer { - name: "inception_4c/1x1" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_1x1" - type: "ReLU" - bottom: "inception_4c/1x1" - top: "inception_4c/1x1" -} -layer { - name: "inception_4c/3x3_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3_reduce" -} -layer { - name: "inception_4c/3x3" - type: "Convolution" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3" - type: "ReLU" - bottom: "inception_4c/3x3" - top: "inception_4c/3x3" -} -layer { - name: "inception_4c/5x5_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5_reduce" -} -layer { - name: "inception_4c/5x5" - type: "Convolution" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5" - type: "ReLU" - bottom: "inception_4c/5x5" - top: "inception_4c/5x5" -} -layer { - name: "inception_4c/pool" - type: "Pooling" - bottom: "inception_4b/output" - top: "inception_4c/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4c/pool_proj" - type: "Convolution" - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_pool_proj" - type: "ReLU" - bottom: "inception_4c/pool_proj" - top: "inception_4c/pool_proj" -} -layer { - name: "inception_4c/output" - type: "Concat" - bottom: "inception_4c/1x1" - bottom: "inception_4c/3x3" - bottom: "inception_4c/5x5" - bottom: "inception_4c/pool_proj" - top: "inception_4c/output" -} -layer { - name: "inception_4d/1x1" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_1x1" - type: "ReLU" - bottom: "inception_4d/1x1" - top: "inception_4d/1x1" -} -layer { - name: "inception_4d/3x3_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 144 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3_reduce" -} -layer { - name: "inception_4d/3x3" - type: "Convolution" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 288 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3" - type: "ReLU" - bottom: "inception_4d/3x3" - top: "inception_4d/3x3" -} -layer { - name: "inception_4d/5x5_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5_reduce" -} -layer { - name: "inception_4d/5x5" - type: "Convolution" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5" - type: "ReLU" - bottom: "inception_4d/5x5" - top: "inception_4d/5x5" -} -layer { - name: "inception_4d/pool" - type: "Pooling" - bottom: "inception_4c/output" - top: "inception_4d/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4d/pool_proj" - type: "Convolution" - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_pool_proj" - type: "ReLU" - bottom: "inception_4d/pool_proj" - top: "inception_4d/pool_proj" -} -layer { - name: "inception_4d/output" - type: "Concat" - bottom: "inception_4d/1x1" - bottom: "inception_4d/3x3" - bottom: "inception_4d/5x5" - bottom: "inception_4d/pool_proj" - top: "inception_4d/output" -} -layer { - name: "loss2/ave_pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "loss2/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss2/conv" - type: "Convolution" - bottom: "loss2/ave_pool" - top: "loss2/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_conv" - type: "ReLU" - bottom: "loss2/conv" - top: "loss2/conv" -} -layer { - name: "loss2/fc" - type: "InnerProduct" - bottom: "loss2/conv" - top: "loss2/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_fc" - type: "ReLU" - bottom: "loss2/fc" - top: "loss2/fc" -} -layer { - name: "loss2/drop_fc" - type: "Dropout" - bottom: "loss2/fc" - top: "loss2/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss2/classifier" - type: "InnerProduct" - bottom: "loss2/fc" - top: "loss2/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss2/loss" - type: "SoftmaxWithLoss" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss1" - loss_weight: 0.3 -} -layer { - name: "loss2/top-1" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-1" - include { - phase: TEST - } -} -layer { - name: "loss2/top-5" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4e/1x1" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_1x1" - type: "ReLU" - bottom: "inception_4e/1x1" - top: "inception_4e/1x1" -} -layer { - name: "inception_4e/3x3_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3_reduce" -} -layer { - name: "inception_4e/3x3" - type: "Convolution" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3" - type: "ReLU" - bottom: "inception_4e/3x3" - top: "inception_4e/3x3" -} -layer { - name: "inception_4e/5x5_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5_reduce" -} -layer { - name: "inception_4e/5x5" - type: "Convolution" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5" - type: "ReLU" - bottom: "inception_4e/5x5" - top: "inception_4e/5x5" -} -layer { - name: "inception_4e/pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "inception_4e/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4e/pool_proj" - type: "Convolution" - bottom: "inception_4e/pool" - top: "inception_4e/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_pool_proj" - type: "ReLU" - bottom: "inception_4e/pool_proj" - top: "inception_4e/pool_proj" -} -layer { - name: "inception_4e/output" - type: "Concat" - bottom: "inception_4e/1x1" - bottom: "inception_4e/3x3" - bottom: "inception_4e/5x5" - bottom: "inception_4e/pool_proj" - top: "inception_4e/output" -} -layer { - name: "pool4/3x3_s2" - type: "Pooling" - bottom: "inception_4e/output" - top: "pool4/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_5a/1x1" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_1x1" - type: "ReLU" - bottom: "inception_5a/1x1" - top: "inception_5a/1x1" -} -layer { - name: "inception_5a/3x3_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3_reduce" -} -layer { - name: "inception_5a/3x3" - type: "Convolution" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3" - type: "ReLU" - bottom: "inception_5a/3x3" - top: "inception_5a/3x3" -} -layer { - name: "inception_5a/5x5_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5_reduce" -} -layer { - name: "inception_5a/5x5" - type: "Convolution" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5" - type: "ReLU" - bottom: "inception_5a/5x5" - top: "inception_5a/5x5" -} -layer { - name: "inception_5a/pool" - type: "Pooling" - bottom: "pool4/3x3_s2" - top: "inception_5a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5a/pool_proj" - type: "Convolution" - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_pool_proj" - type: "ReLU" - bottom: "inception_5a/pool_proj" - top: "inception_5a/pool_proj" -} -layer { - name: "inception_5a/output" - type: "Concat" - bottom: "inception_5a/1x1" - bottom: "inception_5a/3x3" - bottom: "inception_5a/5x5" - bottom: "inception_5a/pool_proj" - top: "inception_5a/output" -} -layer { - name: "inception_5b/1x1" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_1x1" - type: "ReLU" - bottom: "inception_5b/1x1" - top: "inception_5b/1x1" -} -layer { - name: "inception_5b/3x3_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3_reduce" -} -layer { - name: "inception_5b/3x3" - type: "Convolution" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3" - type: "ReLU" - bottom: "inception_5b/3x3" - top: "inception_5b/3x3" -} -layer { - name: "inception_5b/5x5_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5_reduce" -} -layer { - name: "inception_5b/5x5" - type: "Convolution" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5" - type: "ReLU" - bottom: "inception_5b/5x5" - top: "inception_5b/5x5" -} -layer { - name: "inception_5b/pool" - type: "Pooling" - bottom: "inception_5a/output" - top: "inception_5b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5b/pool_proj" - type: "Convolution" - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_pool_proj" - type: "ReLU" - bottom: "inception_5b/pool_proj" - top: "inception_5b/pool_proj" -} -layer { - name: "inception_5b/output" - type: "Concat" - bottom: "inception_5b/1x1" - bottom: "inception_5b/3x3" - bottom: "inception_5b/5x5" - bottom: "inception_5b/pool_proj" - top: "inception_5b/output" -} -layer { - name: "pool5/7x7_s1" - type: "Pooling" - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - pooling_param { - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - name: "pool5/drop_7x7_s1" - type: "Dropout" - bottom: "pool5/7x7_s1" - top: "pool5/7x7_s1" - dropout_param { - dropout_ratio: 0.4 - } -} -layer { - name: "loss3/classifier" - type: "InnerProduct" - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss3/loss3" - type: "SoftmaxWithLoss" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss3" - loss_weight: 1 -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/googlenet/skx/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet/skx/solver_dummydata.prototxt deleted file mode 100644 index bc2d576a0..000000000 --- a/models/intel_optimized_models/googlenet/skx/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet/skx/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet/skx/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet/skx/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet/skx/train_val_dummydata.prototxt deleted file mode 100644 index 602416008..000000000 --- a/models/intel_optimized_models/googlenet/skx/train_val_dummydata.prototxt +++ /dev/null @@ -1,2427 +0,0 @@ -name: "GoogleNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1/7x7_s2" - type: "Convolution" - bottom: "data" - top: "conv1/7x7_s2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv1/relu_7x7" - type: "ReLU" - bottom: "conv1/7x7_s2" - top: "conv1/7x7_s2" -} -layer { - name: "pool1/3x3_s2" - type: "Pooling" - bottom: "conv1/7x7_s2" - top: "pool1/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "pool1/norm1" - type: "LRN" - bottom: "pool1/3x3_s2" - top: "pool1/norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "conv2/3x3_reduce" - type: "Convolution" - bottom: "pool1/norm1" - top: "conv2/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3_reduce" - type: "ReLU" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3_reduce" -} -layer { - name: "conv2/3x3" - type: "Convolution" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3" - type: "ReLU" - bottom: "conv2/3x3" - top: "conv2/3x3" -} -layer { - name: "conv2/norm2" - type: "LRN" - bottom: "conv2/3x3" - top: "conv2/norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2/3x3_s2" - type: "Pooling" - bottom: "conv2/norm2" - top: "pool2/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_3a/1x1" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_1x1" - type: "ReLU" - bottom: "inception_3a/1x1" - top: "inception_3a/1x1" -} -layer { - name: "inception_3a/3x3_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3_reduce" -} -layer { - name: "inception_3a/3x3" - type: "Convolution" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3" - type: "ReLU" - bottom: "inception_3a/3x3" - top: "inception_3a/3x3" -} -layer { - name: "inception_3a/5x5_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5_reduce" -} -layer { - name: "inception_3a/5x5" - type: "Convolution" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5" - type: "ReLU" - bottom: "inception_3a/5x5" - top: "inception_3a/5x5" -} -layer { - name: "inception_3a/pool" - type: "Pooling" - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3a/pool_proj" - type: "Convolution" - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_pool_proj" - type: "ReLU" - bottom: "inception_3a/pool_proj" - top: "inception_3a/pool_proj" -} -layer { - name: "inception_3a/output" - type: "Concat" - bottom: "inception_3a/1x1" - bottom: "inception_3a/3x3" - bottom: "inception_3a/5x5" - bottom: "inception_3a/pool_proj" - top: "inception_3a/output" -} -layer { - name: "inception_3b/1x1" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_1x1" - type: "ReLU" - bottom: "inception_3b/1x1" - top: "inception_3b/1x1" -} -layer { - name: "inception_3b/3x3_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3_reduce" -} -layer { - name: "inception_3b/3x3" - type: "Convolution" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3" - type: "ReLU" - bottom: "inception_3b/3x3" - top: "inception_3b/3x3" -} -layer { - name: "inception_3b/5x5_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5_reduce" -} -layer { - name: "inception_3b/5x5" - type: "Convolution" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5" - type: "ReLU" - bottom: "inception_3b/5x5" - top: "inception_3b/5x5" -} -layer { - name: "inception_3b/pool" - type: "Pooling" - bottom: "inception_3a/output" - top: "inception_3b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3b/pool_proj" - type: "Convolution" - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_pool_proj" - type: "ReLU" - bottom: "inception_3b/pool_proj" - top: "inception_3b/pool_proj" -} -layer { - name: "inception_3b/output" - type: "Concat" - bottom: "inception_3b/1x1" - bottom: "inception_3b/3x3" - bottom: "inception_3b/5x5" - bottom: "inception_3b/pool_proj" - top: "inception_3b/output" -} -layer { - name: "pool3/3x3_s2" - type: "Pooling" - bottom: "inception_3b/output" - top: "pool3/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_4a/1x1" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_1x1" - type: "ReLU" - bottom: "inception_4a/1x1" - top: "inception_4a/1x1" -} -layer { - name: "inception_4a/3x3_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3_reduce" -} -layer { - name: "inception_4a/3x3" - type: "Convolution" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 208 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3" - type: "ReLU" - bottom: "inception_4a/3x3" - top: "inception_4a/3x3" -} -layer { - name: "inception_4a/5x5_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5_reduce" -} -layer { - name: "inception_4a/5x5" - type: "Convolution" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5" - type: "ReLU" - bottom: "inception_4a/5x5" - top: "inception_4a/5x5" -} -layer { - name: "inception_4a/pool" - type: "Pooling" - bottom: "pool3/3x3_s2" - top: "inception_4a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4a/pool_proj" - type: "Convolution" - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_pool_proj" - type: "ReLU" - bottom: "inception_4a/pool_proj" - top: "inception_4a/pool_proj" -} -layer { - name: "inception_4a/output" - type: "Concat" - bottom: "inception_4a/1x1" - bottom: "inception_4a/3x3" - bottom: "inception_4a/5x5" - bottom: "inception_4a/pool_proj" - top: "inception_4a/output" -} -layer { - name: "loss1/ave_pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "loss1/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss1/conv" - type: "Convolution" - bottom: "loss1/ave_pool" - top: "loss1/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_conv" - type: "ReLU" - bottom: "loss1/conv" - top: "loss1/conv" -} -layer { - name: "loss1/fc" - type: "InnerProduct" - bottom: "loss1/conv" - top: "loss1/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_fc" - type: "ReLU" - bottom: "loss1/fc" - top: "loss1/fc" -} -layer { - name: "loss1/drop_fc" - type: "Dropout" - bottom: "loss1/fc" - top: "loss1/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss1/classifier" - type: "InnerProduct" - bottom: "loss1/fc" - top: "loss1/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss1/loss" - type: "SoftmaxWithLoss" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss1" - loss_weight: 0.3 -} -layer { - name: "loss1/top-1" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-1" - include { - phase: TEST - } -} -layer { - name: "loss1/top-5" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4b/1x1" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_1x1" - type: "ReLU" - bottom: "inception_4b/1x1" - top: "inception_4b/1x1" -} -layer { - name: "inception_4b/3x3_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3_reduce" -} -layer { - name: "inception_4b/3x3" - type: "Convolution" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 224 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3" - type: "ReLU" - bottom: "inception_4b/3x3" - top: "inception_4b/3x3" -} -layer { - name: "inception_4b/5x5_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5_reduce" -} -layer { - name: "inception_4b/5x5" - type: "Convolution" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5" - type: "ReLU" - bottom: "inception_4b/5x5" - top: "inception_4b/5x5" -} -layer { - name: "inception_4b/pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "inception_4b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4b/pool_proj" - type: "Convolution" - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_pool_proj" - type: "ReLU" - bottom: "inception_4b/pool_proj" - top: "inception_4b/pool_proj" -} -layer { - name: "inception_4b/output" - type: "Concat" - bottom: "inception_4b/1x1" - bottom: "inception_4b/3x3" - bottom: "inception_4b/5x5" - bottom: "inception_4b/pool_proj" - top: "inception_4b/output" -} -layer { - name: "inception_4c/1x1" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_1x1" - type: "ReLU" - bottom: "inception_4c/1x1" - top: "inception_4c/1x1" -} -layer { - name: "inception_4c/3x3_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3_reduce" -} -layer { - name: "inception_4c/3x3" - type: "Convolution" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3" - type: "ReLU" - bottom: "inception_4c/3x3" - top: "inception_4c/3x3" -} -layer { - name: "inception_4c/5x5_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5_reduce" -} -layer { - name: "inception_4c/5x5" - type: "Convolution" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5" - type: "ReLU" - bottom: "inception_4c/5x5" - top: "inception_4c/5x5" -} -layer { - name: "inception_4c/pool" - type: "Pooling" - bottom: "inception_4b/output" - top: "inception_4c/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4c/pool_proj" - type: "Convolution" - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_pool_proj" - type: "ReLU" - bottom: "inception_4c/pool_proj" - top: "inception_4c/pool_proj" -} -layer { - name: "inception_4c/output" - type: "Concat" - bottom: "inception_4c/1x1" - bottom: "inception_4c/3x3" - bottom: "inception_4c/5x5" - bottom: "inception_4c/pool_proj" - top: "inception_4c/output" -} -layer { - name: "inception_4d/1x1" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_1x1" - type: "ReLU" - bottom: "inception_4d/1x1" - top: "inception_4d/1x1" -} -layer { - name: "inception_4d/3x3_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 144 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3_reduce" -} -layer { - name: "inception_4d/3x3" - type: "Convolution" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 288 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3" - type: "ReLU" - bottom: "inception_4d/3x3" - top: "inception_4d/3x3" -} -layer { - name: "inception_4d/5x5_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5_reduce" -} -layer { - name: "inception_4d/5x5" - type: "Convolution" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5" - type: "ReLU" - bottom: "inception_4d/5x5" - top: "inception_4d/5x5" -} -layer { - name: "inception_4d/pool" - type: "Pooling" - bottom: "inception_4c/output" - top: "inception_4d/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4d/pool_proj" - type: "Convolution" - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_pool_proj" - type: "ReLU" - bottom: "inception_4d/pool_proj" - top: "inception_4d/pool_proj" -} -layer { - name: "inception_4d/output" - type: "Concat" - bottom: "inception_4d/1x1" - bottom: "inception_4d/3x3" - bottom: "inception_4d/5x5" - bottom: "inception_4d/pool_proj" - top: "inception_4d/output" -} -layer { - name: "loss2/ave_pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "loss2/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss2/conv" - type: "Convolution" - bottom: "loss2/ave_pool" - top: "loss2/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_conv" - type: "ReLU" - bottom: "loss2/conv" - top: "loss2/conv" -} -layer { - name: "loss2/fc" - type: "InnerProduct" - bottom: "loss2/conv" - top: "loss2/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_fc" - type: "ReLU" - bottom: "loss2/fc" - top: "loss2/fc" -} -layer { - name: "loss2/drop_fc" - type: "Dropout" - bottom: "loss2/fc" - top: "loss2/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss2/classifier" - type: "InnerProduct" - bottom: "loss2/fc" - top: "loss2/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss2/loss" - type: "SoftmaxWithLoss" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss1" - loss_weight: 0.3 -} -layer { - name: "loss2/top-1" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-1" - include { - phase: TEST - } -} -layer { - name: "loss2/top-5" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4e/1x1" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_1x1" - type: "ReLU" - bottom: "inception_4e/1x1" - top: "inception_4e/1x1" -} -layer { - name: "inception_4e/3x3_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3_reduce" -} -layer { - name: "inception_4e/3x3" - type: "Convolution" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3" - type: "ReLU" - bottom: "inception_4e/3x3" - top: "inception_4e/3x3" -} -layer { - name: "inception_4e/5x5_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5_reduce" -} -layer { - name: "inception_4e/5x5" - type: "Convolution" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5" - type: "ReLU" - bottom: "inception_4e/5x5" - top: "inception_4e/5x5" -} -layer { - name: "inception_4e/pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "inception_4e/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4e/pool_proj" - type: "Convolution" - bottom: "inception_4e/pool" - top: "inception_4e/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_pool_proj" - type: "ReLU" - bottom: "inception_4e/pool_proj" - top: "inception_4e/pool_proj" -} -layer { - name: "inception_4e/output" - type: "Concat" - bottom: "inception_4e/1x1" - bottom: "inception_4e/3x3" - bottom: "inception_4e/5x5" - bottom: "inception_4e/pool_proj" - top: "inception_4e/output" -} -layer { - name: "pool4/3x3_s2" - type: "Pooling" - bottom: "inception_4e/output" - top: "pool4/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_5a/1x1" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_1x1" - type: "ReLU" - bottom: "inception_5a/1x1" - top: "inception_5a/1x1" -} -layer { - name: "inception_5a/3x3_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3_reduce" -} -layer { - name: "inception_5a/3x3" - type: "Convolution" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3" - type: "ReLU" - bottom: "inception_5a/3x3" - top: "inception_5a/3x3" -} -layer { - name: "inception_5a/5x5_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5_reduce" -} -layer { - name: "inception_5a/5x5" - type: "Convolution" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5" - type: "ReLU" - bottom: "inception_5a/5x5" - top: "inception_5a/5x5" -} -layer { - name: "inception_5a/pool" - type: "Pooling" - bottom: "pool4/3x3_s2" - top: "inception_5a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5a/pool_proj" - type: "Convolution" - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_pool_proj" - type: "ReLU" - bottom: "inception_5a/pool_proj" - top: "inception_5a/pool_proj" -} -layer { - name: "inception_5a/output" - type: "Concat" - bottom: "inception_5a/1x1" - bottom: "inception_5a/3x3" - bottom: "inception_5a/5x5" - bottom: "inception_5a/pool_proj" - top: "inception_5a/output" -} -layer { - name: "inception_5b/1x1" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_1x1" - type: "ReLU" - bottom: "inception_5b/1x1" - top: "inception_5b/1x1" -} -layer { - name: "inception_5b/3x3_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3_reduce" -} -layer { - name: "inception_5b/3x3" - type: "Convolution" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3" - type: "ReLU" - bottom: "inception_5b/3x3" - top: "inception_5b/3x3" -} -layer { - name: "inception_5b/5x5_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5_reduce" -} -layer { - name: "inception_5b/5x5" - type: "Convolution" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5" - type: "ReLU" - bottom: "inception_5b/5x5" - top: "inception_5b/5x5" -} -layer { - name: "inception_5b/pool" - type: "Pooling" - bottom: "inception_5a/output" - top: "inception_5b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5b/pool_proj" - type: "Convolution" - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_pool_proj" - type: "ReLU" - bottom: "inception_5b/pool_proj" - top: "inception_5b/pool_proj" -} -layer { - name: "inception_5b/output" - type: "Concat" - bottom: "inception_5b/1x1" - bottom: "inception_5b/3x3" - bottom: "inception_5b/5x5" - bottom: "inception_5b/pool_proj" - top: "inception_5b/output" -} -layer { - name: "pool5/7x7_s1" - type: "Pooling" - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - pooling_param { - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - name: "pool5/drop_7x7_s1" - type: "Dropout" - bottom: "pool5/7x7_s1" - top: "pool5/7x7_s1" - dropout_param { - dropout_ratio: 0.4 - } -} -layer { - name: "loss3/classifier" - type: "InnerProduct" - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss3/loss3" - type: "SoftmaxWithLoss" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss3" - loss_weight: 1 -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/googlenet/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet/train_val_dummydata.prototxt deleted file mode 100644 index bf411dfe7..000000000 --- a/models/intel_optimized_models/googlenet/train_val_dummydata.prototxt +++ /dev/null @@ -1,2427 +0,0 @@ -name: "GoogleNet" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 64 dim: 3 dim: 224 dim: 224 } - shape: { dim: 64 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 32 dim: 3 dim: 224 dim: 224 } - shape: { dim: 32 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - name: "conv1/7x7_s2" - type: "Convolution" - bottom: "data" - top: "conv1/7x7_s2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv1/relu_7x7" - type: "ReLU" - bottom: "conv1/7x7_s2" - top: "conv1/7x7_s2" -} -layer { - name: "pool1/3x3_s2" - type: "Pooling" - bottom: "conv1/7x7_s2" - top: "pool1/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "pool1/norm1" - type: "LRN" - bottom: "pool1/3x3_s2" - top: "pool1/norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "conv2/3x3_reduce" - type: "Convolution" - bottom: "pool1/norm1" - top: "conv2/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3_reduce" - type: "ReLU" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3_reduce" -} -layer { - name: "conv2/3x3" - type: "Convolution" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "conv2/relu_3x3" - type: "ReLU" - bottom: "conv2/3x3" - top: "conv2/3x3" -} -layer { - name: "conv2/norm2" - type: "LRN" - bottom: "conv2/3x3" - top: "conv2/norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2/3x3_s2" - type: "Pooling" - bottom: "conv2/norm2" - top: "pool2/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_3a/1x1" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_1x1" - type: "ReLU" - bottom: "inception_3a/1x1" - top: "inception_3a/1x1" -} -layer { - name: "inception_3a/3x3_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3_reduce" -} -layer { - name: "inception_3a/3x3" - type: "Convolution" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_3x3" - type: "ReLU" - bottom: "inception_3a/3x3" - top: "inception_3a/3x3" -} -layer { - name: "inception_3a/5x5_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5_reduce" -} -layer { - name: "inception_3a/5x5" - type: "Convolution" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_5x5" - type: "ReLU" - bottom: "inception_3a/5x5" - top: "inception_3a/5x5" -} -layer { - name: "inception_3a/pool" - type: "Pooling" - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3a/pool_proj" - type: "Convolution" - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3a/relu_pool_proj" - type: "ReLU" - bottom: "inception_3a/pool_proj" - top: "inception_3a/pool_proj" -} -layer { - name: "inception_3a/output" - type: "Concat" - bottom: "inception_3a/1x1" - bottom: "inception_3a/3x3" - bottom: "inception_3a/5x5" - bottom: "inception_3a/pool_proj" - top: "inception_3a/output" -} -layer { - name: "inception_3b/1x1" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_1x1" - type: "ReLU" - bottom: "inception_3b/1x1" - top: "inception_3b/1x1" -} -layer { - name: "inception_3b/3x3_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3_reduce" -} -layer { - name: "inception_3b/3x3" - type: "Convolution" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_3x3" - type: "ReLU" - bottom: "inception_3b/3x3" - top: "inception_3b/3x3" -} -layer { - name: "inception_3b/5x5_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5_reduce" -} -layer { - name: "inception_3b/5x5" - type: "Convolution" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_5x5" - type: "ReLU" - bottom: "inception_3b/5x5" - top: "inception_3b/5x5" -} -layer { - name: "inception_3b/pool" - type: "Pooling" - bottom: "inception_3a/output" - top: "inception_3b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3b/pool_proj" - type: "Convolution" - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_3b/relu_pool_proj" - type: "ReLU" - bottom: "inception_3b/pool_proj" - top: "inception_3b/pool_proj" -} -layer { - name: "inception_3b/output" - type: "Concat" - bottom: "inception_3b/1x1" - bottom: "inception_3b/3x3" - bottom: "inception_3b/5x5" - bottom: "inception_3b/pool_proj" - top: "inception_3b/output" -} -layer { - name: "pool3/3x3_s2" - type: "Pooling" - bottom: "inception_3b/output" - top: "pool3/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_4a/1x1" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_1x1" - type: "ReLU" - bottom: "inception_4a/1x1" - top: "inception_4a/1x1" -} -layer { - name: "inception_4a/3x3_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3_reduce" -} -layer { - name: "inception_4a/3x3" - type: "Convolution" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 208 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_3x3" - type: "ReLU" - bottom: "inception_4a/3x3" - top: "inception_4a/3x3" -} -layer { - name: "inception_4a/5x5_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5_reduce" -} -layer { - name: "inception_4a/5x5" - type: "Convolution" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_5x5" - type: "ReLU" - bottom: "inception_4a/5x5" - top: "inception_4a/5x5" -} -layer { - name: "inception_4a/pool" - type: "Pooling" - bottom: "pool3/3x3_s2" - top: "inception_4a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4a/pool_proj" - type: "Convolution" - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4a/relu_pool_proj" - type: "ReLU" - bottom: "inception_4a/pool_proj" - top: "inception_4a/pool_proj" -} -layer { - name: "inception_4a/output" - type: "Concat" - bottom: "inception_4a/1x1" - bottom: "inception_4a/3x3" - bottom: "inception_4a/5x5" - bottom: "inception_4a/pool_proj" - top: "inception_4a/output" -} -layer { - name: "loss1/ave_pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "loss1/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss1/conv" - type: "Convolution" - bottom: "loss1/ave_pool" - top: "loss1/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_conv" - type: "ReLU" - bottom: "loss1/conv" - top: "loss1/conv" -} -layer { - name: "loss1/fc" - type: "InnerProduct" - bottom: "loss1/conv" - top: "loss1/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss1/relu_fc" - type: "ReLU" - bottom: "loss1/fc" - top: "loss1/fc" -} -layer { - name: "loss1/drop_fc" - type: "Dropout" - bottom: "loss1/fc" - top: "loss1/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss1/classifier" - type: "InnerProduct" - bottom: "loss1/fc" - top: "loss1/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss1/loss" - type: "SoftmaxWithLoss" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss1" - loss_weight: 0.3 -} -layer { - name: "loss1/top-1" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-1" - include { - phase: TEST - } -} -layer { - name: "loss1/top-5" - type: "Accuracy" - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4b/1x1" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_1x1" - type: "ReLU" - bottom: "inception_4b/1x1" - top: "inception_4b/1x1" -} -layer { - name: "inception_4b/3x3_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3_reduce" -} -layer { - name: "inception_4b/3x3" - type: "Convolution" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 224 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_3x3" - type: "ReLU" - bottom: "inception_4b/3x3" - top: "inception_4b/3x3" -} -layer { - name: "inception_4b/5x5_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5_reduce" -} -layer { - name: "inception_4b/5x5" - type: "Convolution" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_5x5" - type: "ReLU" - bottom: "inception_4b/5x5" - top: "inception_4b/5x5" -} -layer { - name: "inception_4b/pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "inception_4b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4b/pool_proj" - type: "Convolution" - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4b/relu_pool_proj" - type: "ReLU" - bottom: "inception_4b/pool_proj" - top: "inception_4b/pool_proj" -} -layer { - name: "inception_4b/output" - type: "Concat" - bottom: "inception_4b/1x1" - bottom: "inception_4b/3x3" - bottom: "inception_4b/5x5" - bottom: "inception_4b/pool_proj" - top: "inception_4b/output" -} -layer { - name: "inception_4c/1x1" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_1x1" - type: "ReLU" - bottom: "inception_4c/1x1" - top: "inception_4c/1x1" -} -layer { - name: "inception_4c/3x3_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3_reduce" -} -layer { - name: "inception_4c/3x3" - type: "Convolution" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_3x3" - type: "ReLU" - bottom: "inception_4c/3x3" - top: "inception_4c/3x3" -} -layer { - name: "inception_4c/5x5_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5_reduce" -} -layer { - name: "inception_4c/5x5" - type: "Convolution" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_5x5" - type: "ReLU" - bottom: "inception_4c/5x5" - top: "inception_4c/5x5" -} -layer { - name: "inception_4c/pool" - type: "Pooling" - bottom: "inception_4b/output" - top: "inception_4c/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4c/pool_proj" - type: "Convolution" - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4c/relu_pool_proj" - type: "ReLU" - bottom: "inception_4c/pool_proj" - top: "inception_4c/pool_proj" -} -layer { - name: "inception_4c/output" - type: "Concat" - bottom: "inception_4c/1x1" - bottom: "inception_4c/3x3" - bottom: "inception_4c/5x5" - bottom: "inception_4c/pool_proj" - top: "inception_4c/output" -} -layer { - name: "inception_4d/1x1" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_1x1" - type: "ReLU" - bottom: "inception_4d/1x1" - top: "inception_4d/1x1" -} -layer { - name: "inception_4d/3x3_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 144 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3_reduce" -} -layer { - name: "inception_4d/3x3" - type: "Convolution" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 288 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_3x3" - type: "ReLU" - bottom: "inception_4d/3x3" - top: "inception_4d/3x3" -} -layer { - name: "inception_4d/5x5_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5_reduce" -} -layer { - name: "inception_4d/5x5" - type: "Convolution" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_5x5" - type: "ReLU" - bottom: "inception_4d/5x5" - top: "inception_4d/5x5" -} -layer { - name: "inception_4d/pool" - type: "Pooling" - bottom: "inception_4c/output" - top: "inception_4d/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4d/pool_proj" - type: "Convolution" - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4d/relu_pool_proj" - type: "ReLU" - bottom: "inception_4d/pool_proj" - top: "inception_4d/pool_proj" -} -layer { - name: "inception_4d/output" - type: "Concat" - bottom: "inception_4d/1x1" - bottom: "inception_4d/3x3" - bottom: "inception_4d/5x5" - bottom: "inception_4d/pool_proj" - top: "inception_4d/output" -} -layer { - name: "loss2/ave_pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "loss2/ave_pool" - pooling_param { - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - name: "loss2/conv" - type: "Convolution" - bottom: "loss2/ave_pool" - top: "loss2/conv" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_conv" - type: "ReLU" - bottom: "loss2/conv" - top: "loss2/conv" -} -layer { - name: "loss2/fc" - type: "InnerProduct" - bottom: "loss2/conv" - top: "loss2/fc" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "loss2/relu_fc" - type: "ReLU" - bottom: "loss2/fc" - top: "loss2/fc" -} -layer { - name: "loss2/drop_fc" - type: "Dropout" - bottom: "loss2/fc" - top: "loss2/fc" - dropout_param { - dropout_ratio: 0.7 - } -} -layer { - name: "loss2/classifier" - type: "InnerProduct" - bottom: "loss2/fc" - top: "loss2/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss2/loss" - type: "SoftmaxWithLoss" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss1" - loss_weight: 0.3 -} -layer { - name: "loss2/top-1" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-1" - include { - phase: TEST - } -} -layer { - name: "loss2/top-5" - type: "Accuracy" - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} -layer { - name: "inception_4e/1x1" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_1x1" - type: "ReLU" - bottom: "inception_4e/1x1" - top: "inception_4e/1x1" -} -layer { - name: "inception_4e/3x3_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3_reduce" -} -layer { - name: "inception_4e/3x3" - type: "Convolution" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_3x3" - type: "ReLU" - bottom: "inception_4e/3x3" - top: "inception_4e/3x3" -} -layer { - name: "inception_4e/5x5_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5_reduce" -} -layer { - name: "inception_4e/5x5" - type: "Convolution" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_5x5" - type: "ReLU" - bottom: "inception_4e/5x5" - top: "inception_4e/5x5" -} -layer { - name: "inception_4e/pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "inception_4e/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4e/pool_proj" - type: "Convolution" - bottom: "inception_4e/pool" - top: "inception_4e/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_4e/relu_pool_proj" - type: "ReLU" - bottom: "inception_4e/pool_proj" - top: "inception_4e/pool_proj" -} -layer { - name: "inception_4e/output" - type: "Concat" - bottom: "inception_4e/1x1" - bottom: "inception_4e/3x3" - bottom: "inception_4e/5x5" - bottom: "inception_4e/pool_proj" - top: "inception_4e/output" -} -layer { - name: "pool4/3x3_s2" - type: "Pooling" - bottom: "inception_4e/output" - top: "pool4/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_5a/1x1" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_1x1" - type: "ReLU" - bottom: "inception_5a/1x1" - top: "inception_5a/1x1" -} -layer { - name: "inception_5a/3x3_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3_reduce" -} -layer { - name: "inception_5a/3x3" - type: "Convolution" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_3x3" - type: "ReLU" - bottom: "inception_5a/3x3" - top: "inception_5a/3x3" -} -layer { - name: "inception_5a/5x5_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5_reduce" -} -layer { - name: "inception_5a/5x5" - type: "Convolution" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_5x5" - type: "ReLU" - bottom: "inception_5a/5x5" - top: "inception_5a/5x5" -} -layer { - name: "inception_5a/pool" - type: "Pooling" - bottom: "pool4/3x3_s2" - top: "inception_5a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5a/pool_proj" - type: "Convolution" - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5a/relu_pool_proj" - type: "ReLU" - bottom: "inception_5a/pool_proj" - top: "inception_5a/pool_proj" -} -layer { - name: "inception_5a/output" - type: "Concat" - bottom: "inception_5a/1x1" - bottom: "inception_5a/3x3" - bottom: "inception_5a/5x5" - bottom: "inception_5a/pool_proj" - top: "inception_5a/output" -} -layer { - name: "inception_5b/1x1" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_1x1" - type: "ReLU" - bottom: "inception_5b/1x1" - top: "inception_5b/1x1" -} -layer { - name: "inception_5b/3x3_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3_reduce" -} -layer { - name: "inception_5b/3x3" - type: "Convolution" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_3x3" - type: "ReLU" - bottom: "inception_5b/3x3" - top: "inception_5b/3x3" -} -layer { - name: "inception_5b/5x5_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5_reduce" -} -layer { - name: "inception_5b/5x5" - type: "Convolution" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_5x5" - type: "ReLU" - bottom: "inception_5b/5x5" - top: "inception_5b/5x5" -} -layer { - name: "inception_5b/pool" - type: "Pooling" - bottom: "inception_5a/output" - top: "inception_5b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5b/pool_proj" - type: "Convolution" - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.1 - } - } -} -layer { - name: "inception_5b/relu_pool_proj" - type: "ReLU" - bottom: "inception_5b/pool_proj" - top: "inception_5b/pool_proj" -} -layer { - name: "inception_5b/output" - type: "Concat" - bottom: "inception_5b/1x1" - bottom: "inception_5b/3x3" - bottom: "inception_5b/5x5" - bottom: "inception_5b/pool_proj" - top: "inception_5b/output" -} -layer { - name: "pool5/7x7_s1" - type: "Pooling" - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - pooling_param { - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - name: "pool5/drop_7x7_s1" - type: "Dropout" - bottom: "pool5/7x7_s1" - top: "pool5/7x7_s1" - dropout_param { - dropout_ratio: 0.4 - } -} -layer { - name: "loss3/classifier" - type: "InnerProduct" - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "loss3/loss3" - type: "SoftmaxWithLoss" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss3" - loss_weight: 1 -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/googlenet_v2/bdw/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/bdw/solver_dummydata.prototxt deleted file mode 100644 index a823d4fec..000000000 --- a/models/intel_optimized_models/googlenet_v2/bdw/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet_v2/bdw/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet_v2/bdw/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/knl/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/knl/solver_dummydata.prototxt deleted file mode 100644 index 3009ea077..000000000 --- a/models/intel_optimized_models/googlenet_v2/knl/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet_v2/knl/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet_v2/knl/googlenet_v2_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/knm/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/knm/solver_dummydata.prototxt deleted file mode 100644 index 9a64c3e00..000000000 --- a/models/intel_optimized_models/googlenet_v2/knm/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet_v2/knm/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet_v2/knm/googlenet_v2_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/knm/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/knm/train_val_dummydata.prototxt deleted file mode 100644 index 63ca66d97..000000000 --- a/models/intel_optimized_models/googlenet_v2/knm/train_val_dummydata.prototxt +++ /dev/null @@ -1,4034 +0,0 @@ -# Inception Network (GoogLeNet Batch Normalization Network) -name: "InceptionNetwork" -### Training Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -### Validation Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 192 dim: 3 dim: 224 dim: 224 } - shape: { dim: 192 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - bottom: "data" - top: "conv1/7x7_s2" - name: "conv1/7x7_s2" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv1/7x7_s2" - name: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "pool1/3x3_s2" - name: "pool1/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool1/3x3_s2" - top: "conv2/3x3_reduce" - name: "conv2/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3_reduce" - name: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3" - name: "conv2/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3" - name: "conv2/3x3/bn" - top: "conv2/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3/bn" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "pool2/3x3_s2" - name: "pool2/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - name: "inception_3a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/1x1" - name: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3" - name: "inception_3a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3" - name: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3/bn/sc" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3a" - name: "inception_3a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3a" - name: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3b" - name: "inception_3a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3b" - name: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3b/bn/sc" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - name: "inception_3a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - name: "inception_3a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 32 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/pool_proj" - name: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - bottom: "inception_3a/3x3/bn/sc" - bottom: "inception_3a/double3x3b/bn/sc" - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/output" - name: "inception_3a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/1x1" - name: "inception_3b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/1x1" - name: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3" - name: "inception_3b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3" - name: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3/bn/sc" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3a" - name: "inception_3b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3a" - name: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3b" - name: "inception_3b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3b" - name: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3b/bn/sc" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/pool" - name: "inception_3b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - name: "inception_3b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/pool_proj" - name: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - bottom: "inception_3b/3x3/bn/sc" - bottom: "inception_3b/double3x3b/bn/sc" - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/output" - name: "inception_3b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3" - name: "inception_3c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3" - name: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3a" - name: "inception_3c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3a" - name: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3b" - name: "inception_3c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3b" - name: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3b/bn/sc" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/pool" - name: "inception_3c/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - bottom: "inception_3c/double3x3b/bn/sc" - bottom: "inception_3c/pool" - top: "inception_3c/output" - name: "inception_3c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "pool3/5x5_s3" - name: "pool3/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool3/5x5_s3" - top: "loss1/conv" - name: "loss1/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/conv" - name: "loss1/conv/bn" - top: "loss1/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/conv/bn" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/fc" - name: "loss1/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/fc" - name: "loss1/fc/bn" - top: "loss1/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/fc/bn" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/classifier" - name: "loss1/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss" - name: "loss1/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss1/classifier" - top: "loss1/prob" - name: "loss1/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-1" - name: "loss1/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-5" - name: "loss1/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/1x1" - name: "inception_4a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/1x1" - name: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3" - name: "inception_4a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3" - name: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3/bn/sc" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3a" - name: "inception_4a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3a" - name: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3b" - name: "inception_4a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3b" - name: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3b/bn/sc" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/pool" - name: "inception_4a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - name: "inception_4a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/pool_proj" - name: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - bottom: "inception_4a/3x3/bn/sc" - bottom: "inception_4a/double3x3b/bn/sc" - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/output" - name: "inception_4a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/1x1" - name: "inception_4b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/1x1" - name: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3" - name: "inception_4b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3" - name: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3/bn/sc" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3a" - name: "inception_4b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3a" - name: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3b" - name: "inception_4b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3b" - name: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3b/bn/sc" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/pool" - name: "inception_4b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - name: "inception_4b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/pool_proj" - name: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - bottom: "inception_4b/3x3/bn/sc" - bottom: "inception_4b/double3x3b/bn/sc" - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/output" - name: "inception_4b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/1x1" - name: "inception_4c/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/1x1" - name: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3" - name: "inception_4c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3" - name: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3/bn/sc" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3a" - name: "inception_4c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3a" - name: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3b" - name: "inception_4c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3b" - name: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3b/bn/sc" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/pool" - name: "inception_4c/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - name: "inception_4c/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/pool_proj" - name: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - bottom: "inception_4c/3x3/bn/sc" - bottom: "inception_4c/double3x3b/bn/sc" - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/output" - name: "inception_4c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/1x1" - name: "inception_4d/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/1x1" - name: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3" - name: "inception_4d/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3" - name: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3/bn/sc" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3a" - name: "inception_4d/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3a" - name: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3b" - name: "inception_4d/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3b" - name: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3b/bn/sc" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/pool" - name: "inception_4d/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - name: "inception_4d/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/pool_proj" - name: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - bottom: "inception_4d/3x3/bn/sc" - bottom: "inception_4d/double3x3b/bn/sc" - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/output" - name: "inception_4d/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3" - name: "inception_4e/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3" - name: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3a" - name: "inception_4e/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3a" - name: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3b" - name: "inception_4e/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3b" - name: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3b/bn/sc" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/pool" - name: "inception_4e/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - bottom: "inception_4e/double3x3b/bn/sc" - bottom: "inception_4e/pool" - top: "inception_4e/output" - name: "inception_4e/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "pool4/5x5_s3" - name: "pool4/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool4/5x5_s3" - top: "loss2/conv" - name: "loss2/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/conv" - name: "loss2/conv/bn" - top: "loss2/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/conv/bn" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/fc" - name: "loss2/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/fc" - name: "loss2/fc/bn" - top: "loss2/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/fc/bn" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/classifier" - name: "loss2/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss" - name: "loss2/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss2/classifier" - top: "loss2/prob" - name: "loss2/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-1" - name: "loss2/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-5" - name: "loss2/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/1x1" - name: "inception_5a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/1x1" - name: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3" - name: "inception_5a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3" - name: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3/bn/sc" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3a" - name: "inception_5a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3a" - name: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3b" - name: "inception_5a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3b" - name: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3b/bn/sc" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/pool" - name: "inception_5a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - name: "inception_5a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/pool_proj" - name: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - bottom: "inception_5a/3x3/bn/sc" - bottom: "inception_5a/double3x3b/bn/sc" - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/output" - name: "inception_5a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/1x1" - name: "inception_5b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/1x1" - name: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3" - name: "inception_5b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3" - name: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3/bn/sc" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3a" - name: "inception_5b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3a" - name: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3b" - name: "inception_5b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3b" - name: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3b/bn/sc" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/pool" - name: "inception_5b/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - name: "inception_5b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/pool_proj" - name: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - bottom: "inception_5b/3x3/bn/sc" - bottom: "inception_5b/double3x3b/bn/sc" - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/output" - name: "inception_5b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - name: "pool5/7x7_s1" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - name: "loss3/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss" - name: "loss3/loss" - type: "SoftmaxWithLoss" - loss_weight: 1 -} -layer { - bottom: "loss3/classifier" - top: "loss3/prob" - name: "loss3/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-1" - name: "loss3/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-5" - name: "loss3/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} diff --git a/models/intel_optimized_models/googlenet_v2/skx/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/skx/solver_dummydata.prototxt deleted file mode 100644 index b4f4578de..000000000 --- a/models/intel_optimized_models/googlenet_v2/skx/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet_v2/skx/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet_v2/skx/googlenet_v2_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/skx/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/skx/train_val_dummydata.prototxt deleted file mode 100644 index 63ca66d97..000000000 --- a/models/intel_optimized_models/googlenet_v2/skx/train_val_dummydata.prototxt +++ /dev/null @@ -1,4034 +0,0 @@ -# Inception Network (GoogLeNet Batch Normalization Network) -name: "InceptionNetwork" -### Training Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 128 dim: 3 dim: 224 dim: 224 } - shape: { dim: 128 dim: 1 dim: 1 dim: 1 } - } -} - -### Validation Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 192 dim: 3 dim: 224 dim: 224 } - shape: { dim: 192 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - bottom: "data" - top: "conv1/7x7_s2" - name: "conv1/7x7_s2" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv1/7x7_s2" - name: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "pool1/3x3_s2" - name: "pool1/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool1/3x3_s2" - top: "conv2/3x3_reduce" - name: "conv2/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3_reduce" - name: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3" - name: "conv2/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3" - name: "conv2/3x3/bn" - top: "conv2/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3/bn" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "pool2/3x3_s2" - name: "pool2/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - name: "inception_3a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/1x1" - name: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3" - name: "inception_3a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3" - name: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3/bn/sc" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3a" - name: "inception_3a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3a" - name: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3b" - name: "inception_3a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3b" - name: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3b/bn/sc" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - name: "inception_3a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - name: "inception_3a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 32 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/pool_proj" - name: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - bottom: "inception_3a/3x3/bn/sc" - bottom: "inception_3a/double3x3b/bn/sc" - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/output" - name: "inception_3a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/1x1" - name: "inception_3b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/1x1" - name: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3" - name: "inception_3b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3" - name: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3/bn/sc" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3a" - name: "inception_3b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3a" - name: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3b" - name: "inception_3b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3b" - name: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3b/bn/sc" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/pool" - name: "inception_3b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - name: "inception_3b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/pool_proj" - name: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - bottom: "inception_3b/3x3/bn/sc" - bottom: "inception_3b/double3x3b/bn/sc" - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/output" - name: "inception_3b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3" - name: "inception_3c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3" - name: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3a" - name: "inception_3c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3a" - name: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3b" - name: "inception_3c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3b" - name: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3b/bn/sc" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/pool" - name: "inception_3c/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - bottom: "inception_3c/double3x3b/bn/sc" - bottom: "inception_3c/pool" - top: "inception_3c/output" - name: "inception_3c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "pool3/5x5_s3" - name: "pool3/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool3/5x5_s3" - top: "loss1/conv" - name: "loss1/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/conv" - name: "loss1/conv/bn" - top: "loss1/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/conv/bn" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/fc" - name: "loss1/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/fc" - name: "loss1/fc/bn" - top: "loss1/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/fc/bn" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/classifier" - name: "loss1/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss" - name: "loss1/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss1/classifier" - top: "loss1/prob" - name: "loss1/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-1" - name: "loss1/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-5" - name: "loss1/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/1x1" - name: "inception_4a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/1x1" - name: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3" - name: "inception_4a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3" - name: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3/bn/sc" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3a" - name: "inception_4a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3a" - name: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3b" - name: "inception_4a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3b" - name: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3b/bn/sc" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/pool" - name: "inception_4a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - name: "inception_4a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/pool_proj" - name: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - bottom: "inception_4a/3x3/bn/sc" - bottom: "inception_4a/double3x3b/bn/sc" - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/output" - name: "inception_4a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/1x1" - name: "inception_4b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/1x1" - name: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3" - name: "inception_4b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3" - name: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3/bn/sc" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3a" - name: "inception_4b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3a" - name: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3b" - name: "inception_4b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3b" - name: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3b/bn/sc" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/pool" - name: "inception_4b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - name: "inception_4b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/pool_proj" - name: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - bottom: "inception_4b/3x3/bn/sc" - bottom: "inception_4b/double3x3b/bn/sc" - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/output" - name: "inception_4b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/1x1" - name: "inception_4c/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/1x1" - name: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3" - name: "inception_4c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3" - name: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3/bn/sc" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3a" - name: "inception_4c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3a" - name: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3b" - name: "inception_4c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3b" - name: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3b/bn/sc" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/pool" - name: "inception_4c/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - name: "inception_4c/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/pool_proj" - name: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - bottom: "inception_4c/3x3/bn/sc" - bottom: "inception_4c/double3x3b/bn/sc" - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/output" - name: "inception_4c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/1x1" - name: "inception_4d/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/1x1" - name: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3" - name: "inception_4d/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3" - name: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3/bn/sc" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3a" - name: "inception_4d/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3a" - name: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3b" - name: "inception_4d/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3b" - name: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3b/bn/sc" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/pool" - name: "inception_4d/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - name: "inception_4d/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/pool_proj" - name: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - bottom: "inception_4d/3x3/bn/sc" - bottom: "inception_4d/double3x3b/bn/sc" - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/output" - name: "inception_4d/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3" - name: "inception_4e/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3" - name: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3a" - name: "inception_4e/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3a" - name: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3b" - name: "inception_4e/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3b" - name: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3b/bn/sc" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/pool" - name: "inception_4e/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - bottom: "inception_4e/double3x3b/bn/sc" - bottom: "inception_4e/pool" - top: "inception_4e/output" - name: "inception_4e/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "pool4/5x5_s3" - name: "pool4/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool4/5x5_s3" - top: "loss2/conv" - name: "loss2/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/conv" - name: "loss2/conv/bn" - top: "loss2/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/conv/bn" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/fc" - name: "loss2/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/fc" - name: "loss2/fc/bn" - top: "loss2/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/fc/bn" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/classifier" - name: "loss2/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss" - name: "loss2/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss2/classifier" - top: "loss2/prob" - name: "loss2/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-1" - name: "loss2/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-5" - name: "loss2/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/1x1" - name: "inception_5a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/1x1" - name: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3" - name: "inception_5a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3" - name: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3/bn/sc" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3a" - name: "inception_5a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3a" - name: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3b" - name: "inception_5a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3b" - name: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3b/bn/sc" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/pool" - name: "inception_5a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - name: "inception_5a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/pool_proj" - name: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - bottom: "inception_5a/3x3/bn/sc" - bottom: "inception_5a/double3x3b/bn/sc" - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/output" - name: "inception_5a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/1x1" - name: "inception_5b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/1x1" - name: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3" - name: "inception_5b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3" - name: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3/bn/sc" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3a" - name: "inception_5b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3a" - name: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3b" - name: "inception_5b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3b" - name: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3b/bn/sc" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/pool" - name: "inception_5b/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - name: "inception_5b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/pool_proj" - name: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - bottom: "inception_5b/3x3/bn/sc" - bottom: "inception_5b/double3x3b/bn/sc" - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/output" - name: "inception_5b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - name: "pool5/7x7_s1" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - name: "loss3/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss" - name: "loss3/loss" - type: "SoftmaxWithLoss" - loss_weight: 1 -} -layer { - bottom: "loss3/classifier" - top: "loss3/prob" - name: "loss3/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-1" - name: "loss3/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-5" - name: "loss3/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} diff --git a/models/intel_optimized_models/googlenet_v2/solver_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/solver_dummydata.prototxt deleted file mode 100644 index 9162b472c..000000000 --- a/models/intel_optimized_models/googlenet_v2/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/googlenet_v2/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/googlenet_v2/googlenet_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/googlenet_v2/train_val_dummydata.prototxt b/models/intel_optimized_models/googlenet_v2/train_val_dummydata.prototxt deleted file mode 100644 index 2908c3841..000000000 --- a/models/intel_optimized_models/googlenet_v2/train_val_dummydata.prototxt +++ /dev/null @@ -1,4034 +0,0 @@ -# Inception Network (GoogLeNet Batch Normalization Network) -name: "InceptionNetwork" -### Training Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 96 dim: 3 dim: 224 dim: 224 } - shape: { dim: 96 dim: 1 dim: 1 dim: 1 } - } -} - -### Validation Set -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 32 dim: 3 dim: 224 dim: 224 } - shape: { dim: 32 dim: 1 dim: 1 dim: 1 } - } -} - -layer { - bottom: "data" - top: "conv1/7x7_s2" - name: "conv1/7x7_s2" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv1/7x7_s2" - name: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "conv1/7x7_s2/bn/sc" - name: "conv1/7x7_s2/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv1/7x7_s2/bn/sc" - top: "pool1/3x3_s2" - name: "pool1/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool1/3x3_s2" - top: "conv2/3x3_reduce" - name: "conv2/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3_reduce" - name: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3_reduce/bn/sc" - name: "conv2/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3_reduce/bn/sc" - top: "conv2/3x3" - name: "conv2/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "conv2/3x3" - name: "conv2/3x3/bn" - top: "conv2/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "conv2/3x3/bn" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "conv2/3x3/bn/sc" - name: "conv2/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "conv2/3x3/bn/sc" - top: "pool2/3x3_s2" - name: "pool2/3x3_s2" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - name: "inception_3a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/1x1" - name: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - top: "inception_3a/1x1/bn/sc" - name: "inception_3a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3_reduce" - name: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3_reduce/bn/sc" - name: "inception_3a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/3x3_reduce/bn/sc" - top: "inception_3a/3x3" - name: "inception_3a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/3x3" - name: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/3x3/bn" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/3x3/bn/sc" - top: "inception_3a/3x3/bn/sc" - name: "inception_3a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3_reduce" - name: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3_reduce/bn/sc" - name: "inception_3a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3_reduce/bn/sc" - top: "inception_3a/double3x3a" - name: "inception_3a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3a" - name: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3a/bn/sc" - name: "inception_3a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/double3x3a/bn/sc" - top: "inception_3a/double3x3b" - name: "inception_3a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/double3x3b" - name: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/double3x3b/bn" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/double3x3b/bn/sc" - top: "inception_3a/double3x3b/bn/sc" - name: "inception_3a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - name: "inception_3a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - name: "inception_3a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 32 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3a/pool_proj" - name: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3a/pool_proj/bn" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/pool_proj/bn/sc" - name: "inception_3a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/1x1/bn/sc" - bottom: "inception_3a/3x3/bn/sc" - bottom: "inception_3a/double3x3b/bn/sc" - bottom: "inception_3a/pool_proj/bn/sc" - top: "inception_3a/output" - name: "inception_3a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/1x1" - name: "inception_3b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/1x1" - name: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - top: "inception_3b/1x1/bn/sc" - name: "inception_3b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3_reduce" - name: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3_reduce/bn/sc" - name: "inception_3b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/3x3_reduce/bn/sc" - top: "inception_3b/3x3" - name: "inception_3b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/3x3" - name: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/3x3/bn" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/3x3/bn/sc" - top: "inception_3b/3x3/bn/sc" - name: "inception_3b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3_reduce" - name: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3_reduce/bn/sc" - name: "inception_3b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3_reduce/bn/sc" - top: "inception_3b/double3x3a" - name: "inception_3b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3a" - name: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3a/bn/sc" - name: "inception_3b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/double3x3a/bn/sc" - top: "inception_3b/double3x3b" - name: "inception_3b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/double3x3b" - name: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/double3x3b/bn" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/double3x3b/bn/sc" - top: "inception_3b/double3x3b/bn/sc" - name: "inception_3b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3a/output" - top: "inception_3b/pool" - name: "inception_3b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - name: "inception_3b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3b/pool_proj" - name: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3b/pool_proj/bn" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/pool_proj/bn/sc" - name: "inception_3b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/1x1/bn/sc" - bottom: "inception_3b/3x3/bn/sc" - bottom: "inception_3b/double3x3b/bn/sc" - bottom: "inception_3b/pool_proj/bn/sc" - top: "inception_3b/output" - name: "inception_3b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3_reduce" - name: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3_reduce/bn/sc" - name: "inception_3c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/3x3_reduce/bn/sc" - top: "inception_3c/3x3" - name: "inception_3c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/3x3" - name: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/3x3/bn" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - top: "inception_3c/3x3/bn/sc" - name: "inception_3c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3_reduce" - name: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3_reduce/bn/sc" - name: "inception_3c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3_reduce/bn/sc" - top: "inception_3c/double3x3a" - name: "inception_3c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3a" - name: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3a/bn/sc" - name: "inception_3c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/double3x3a/bn/sc" - top: "inception_3c/double3x3b" - name: "inception_3c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_3c/double3x3b" - name: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_3c/double3x3b/bn" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_3c/double3x3b/bn/sc" - top: "inception_3c/double3x3b/bn/sc" - name: "inception_3c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3b/output" - top: "inception_3c/pool" - name: "inception_3c/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_3c/3x3/bn/sc" - bottom: "inception_3c/double3x3b/bn/sc" - bottom: "inception_3c/pool" - top: "inception_3c/output" - name: "inception_3c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "pool3/5x5_s3" - name: "pool3/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool3/5x5_s3" - top: "loss1/conv" - name: "loss1/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/conv" - name: "loss1/conv/bn" - top: "loss1/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/conv/bn" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/conv/bn/sc" - name: "loss1/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/conv/bn/sc" - top: "loss1/fc" - name: "loss1/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss1/fc" - name: "loss1/fc/bn" - top: "loss1/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss1/fc/bn" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/fc/bn/sc" - name: "loss1/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss1/fc/bn/sc" - top: "loss1/classifier" - name: "loss1/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss1/classifier" - bottom: "label" - top: "loss1/loss" - name: "loss1/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss1/classifier" - top: "loss1/prob" - name: "loss1/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-1" - name: "loss1/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss1/prob" - bottom: "label" - top: "loss1/top-5" - name: "loss1/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/1x1" - name: "inception_4a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/1x1" - name: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - top: "inception_4a/1x1/bn/sc" - name: "inception_4a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 64 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3_reduce" - name: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3_reduce/bn/sc" - name: "inception_4a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/3x3_reduce/bn/sc" - top: "inception_4a/3x3" - name: "inception_4a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/3x3" - name: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/3x3/bn" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/3x3/bn/sc" - top: "inception_4a/3x3/bn/sc" - name: "inception_4a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3_reduce" - name: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3_reduce/bn/sc" - name: "inception_4a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3_reduce/bn/sc" - top: "inception_4a/double3x3a" - name: "inception_4a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3a" - name: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3a/bn/sc" - name: "inception_4a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/double3x3a/bn/sc" - top: "inception_4a/double3x3b" - name: "inception_4a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/double3x3b" - name: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/double3x3b/bn" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/double3x3b/bn/sc" - top: "inception_4a/double3x3b/bn/sc" - name: "inception_4a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_3c/output" - top: "inception_4a/pool" - name: "inception_4a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - name: "inception_4a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4a/pool_proj" - name: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4a/pool_proj/bn" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/pool_proj/bn/sc" - name: "inception_4a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/1x1/bn/sc" - bottom: "inception_4a/3x3/bn/sc" - bottom: "inception_4a/double3x3b/bn/sc" - bottom: "inception_4a/pool_proj/bn/sc" - top: "inception_4a/output" - name: "inception_4a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/1x1" - name: "inception_4b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/1x1" - name: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - top: "inception_4b/1x1/bn/sc" - name: "inception_4b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3_reduce" - name: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3_reduce/bn/sc" - name: "inception_4b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/3x3_reduce/bn/sc" - top: "inception_4b/3x3" - name: "inception_4b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/3x3" - name: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/3x3/bn" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/3x3/bn/sc" - top: "inception_4b/3x3/bn/sc" - name: "inception_4b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3_reduce" - name: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3_reduce/bn/sc" - name: "inception_4b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3_reduce/bn/sc" - top: "inception_4b/double3x3a" - name: "inception_4b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3a" - name: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3a/bn/sc" - name: "inception_4b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/double3x3a/bn/sc" - top: "inception_4b/double3x3b" - name: "inception_4b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/double3x3b" - name: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/double3x3b/bn" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/double3x3b/bn/sc" - top: "inception_4b/double3x3b/bn/sc" - name: "inception_4b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4a/output" - top: "inception_4b/pool" - name: "inception_4b/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - name: "inception_4b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4b/pool_proj" - name: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4b/pool_proj/bn" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/pool_proj/bn/sc" - name: "inception_4b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/1x1/bn/sc" - bottom: "inception_4b/3x3/bn/sc" - bottom: "inception_4b/double3x3b/bn/sc" - bottom: "inception_4b/pool_proj/bn/sc" - top: "inception_4b/output" - name: "inception_4b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/1x1" - name: "inception_4c/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/1x1" - name: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - top: "inception_4c/1x1/bn/sc" - name: "inception_4c/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3_reduce" - name: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3_reduce/bn/sc" - name: "inception_4c/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/3x3_reduce/bn/sc" - top: "inception_4c/3x3" - name: "inception_4c/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/3x3" - name: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/3x3/bn" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/3x3/bn/sc" - top: "inception_4c/3x3/bn/sc" - name: "inception_4c/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3_reduce" - name: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3_reduce/bn/sc" - name: "inception_4c/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3_reduce/bn/sc" - top: "inception_4c/double3x3a" - name: "inception_4c/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3a" - name: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3a/bn/sc" - name: "inception_4c/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/double3x3a/bn/sc" - top: "inception_4c/double3x3b" - name: "inception_4c/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/double3x3b" - name: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/double3x3b/bn" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/double3x3b/bn/sc" - top: "inception_4c/double3x3b/bn/sc" - name: "inception_4c/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4b/output" - top: "inception_4c/pool" - name: "inception_4c/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - name: "inception_4c/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4c/pool_proj" - name: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4c/pool_proj/bn" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/pool_proj/bn/sc" - name: "inception_4c/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/1x1/bn/sc" - bottom: "inception_4c/3x3/bn/sc" - bottom: "inception_4c/double3x3b/bn/sc" - bottom: "inception_4c/pool_proj/bn/sc" - top: "inception_4c/output" - name: "inception_4c/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/1x1" - name: "inception_4d/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/1x1" - name: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - top: "inception_4d/1x1/bn/sc" - name: "inception_4d/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3_reduce" - name: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3_reduce/bn/sc" - name: "inception_4d/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/3x3_reduce/bn/sc" - top: "inception_4d/3x3" - name: "inception_4d/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/3x3" - name: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/3x3/bn" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/3x3/bn/sc" - top: "inception_4d/3x3/bn/sc" - name: "inception_4d/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3_reduce" - name: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3_reduce/bn/sc" - name: "inception_4d/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3_reduce/bn/sc" - top: "inception_4d/double3x3a" - name: "inception_4d/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3a" - name: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3a/bn/sc" - name: "inception_4d/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/double3x3a/bn/sc" - top: "inception_4d/double3x3b" - name: "inception_4d/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/double3x3b" - name: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/double3x3b/bn" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/double3x3b/bn/sc" - top: "inception_4d/double3x3b/bn/sc" - name: "inception_4d/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4c/output" - top: "inception_4d/pool" - name: "inception_4d/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - name: "inception_4d/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 96 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4d/pool_proj" - name: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4d/pool_proj/bn" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/pool_proj/bn/sc" - name: "inception_4d/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/1x1/bn/sc" - bottom: "inception_4d/3x3/bn/sc" - bottom: "inception_4d/double3x3b/bn/sc" - bottom: "inception_4d/pool_proj/bn/sc" - top: "inception_4d/output" - name: "inception_4d/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3_reduce" - name: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3_reduce/bn/sc" - name: "inception_4e/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/3x3_reduce/bn/sc" - top: "inception_4e/3x3" - name: "inception_4e/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/3x3" - name: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/3x3/bn" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - top: "inception_4e/3x3/bn/sc" - name: "inception_4e/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3_reduce" - name: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3_reduce/bn/sc" - name: "inception_4e/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3_reduce/bn/sc" - top: "inception_4e/double3x3a" - name: "inception_4e/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3a" - name: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3a/bn/sc" - name: "inception_4e/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/double3x3a/bn/sc" - top: "inception_4e/double3x3b" - name: "inception_4e/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 256 - pad: 1 - kernel_size: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_4e/double3x3b" - name: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_4e/double3x3b/bn" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_4e/double3x3b/bn/sc" - top: "inception_4e/double3x3b/bn/sc" - name: "inception_4e/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4d/output" - top: "inception_4e/pool" - name: "inception_4e/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - bottom: "inception_4e/3x3/bn/sc" - bottom: "inception_4e/double3x3b/bn/sc" - bottom: "inception_4e/pool" - top: "inception_4e/output" - name: "inception_4e/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "pool4/5x5_s3" - name: "pool4/5x5_s3" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 5 - stride: 3 - } -} -layer { - bottom: "pool4/5x5_s3" - top: "loss2/conv" - name: "loss2/conv" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/conv" - name: "loss2/conv/bn" - top: "loss2/conv/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/conv/bn" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/conv/bn/sc" - name: "loss2/conv/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/conv/bn/sc" - top: "loss2/fc" - name: "loss2/fc" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - inner_product_param { - num_output: 1024 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "loss2/fc" - name: "loss2/fc/bn" - top: "loss2/fc/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "loss2/fc/bn" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/fc/bn/sc" - name: "loss2/fc/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "loss2/fc/bn/sc" - top: "loss2/classifier" - name: "loss2/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss2/classifier" - bottom: "label" - top: "loss2/loss" - name: "loss2/loss" - type: "SoftmaxWithLoss" - loss_weight: 0.3 -} -layer { - bottom: "loss2/classifier" - top: "loss2/prob" - name: "loss2/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-1" - name: "loss2/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss2/prob" - bottom: "label" - top: "loss2/top-5" - name: "loss2/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/1x1" - name: "inception_5a/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/1x1" - name: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - top: "inception_5a/1x1/bn/sc" - name: "inception_5a/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3_reduce" - name: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3_reduce/bn/sc" - name: "inception_5a/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/3x3_reduce/bn/sc" - top: "inception_5a/3x3" - name: "inception_5a/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/3x3" - name: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/3x3/bn" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/3x3/bn/sc" - top: "inception_5a/3x3/bn/sc" - name: "inception_5a/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 160 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3_reduce" - name: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3_reduce/bn/sc" - name: "inception_5a/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3_reduce/bn/sc" - top: "inception_5a/double3x3a" - name: "inception_5a/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3a" - name: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3a/bn/sc" - name: "inception_5a/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/double3x3a/bn/sc" - top: "inception_5a/double3x3b" - name: "inception_5a/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/double3x3b" - name: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/double3x3b/bn" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/double3x3b/bn/sc" - top: "inception_5a/double3x3b/bn/sc" - name: "inception_5a/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_4e/output" - top: "inception_5a/pool" - name: "inception_5a/pool" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - name: "inception_5a/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5a/pool_proj" - name: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5a/pool_proj/bn" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/pool_proj/bn/sc" - name: "inception_5a/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/1x1/bn/sc" - bottom: "inception_5a/3x3/bn/sc" - bottom: "inception_5a/double3x3b/bn/sc" - bottom: "inception_5a/pool_proj/bn/sc" - top: "inception_5a/output" - name: "inception_5a/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/1x1" - name: "inception_5b/1x1" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 352 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/1x1" - name: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - top: "inception_5b/1x1/bn/sc" - name: "inception_5b/1x1/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3_reduce" - name: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3_reduce/bn/sc" - name: "inception_5b/3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/3x3_reduce/bn/sc" - top: "inception_5b/3x3" - name: "inception_5b/3x3" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 320 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/3x3" - name: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/3x3/bn" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/3x3/bn/sc" - top: "inception_5b/3x3/bn/sc" - name: "inception_5b/3x3/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 192 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3_reduce" - name: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3_reduce/bn/sc" - name: "inception_5b/double3x3_reduce/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3_reduce/bn/sc" - top: "inception_5b/double3x3a" - name: "inception_5b/double3x3a" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3a" - name: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3a/bn/sc" - name: "inception_5b/double3x3a/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/double3x3a/bn/sc" - top: "inception_5b/double3x3b" - name: "inception_5b/double3x3b" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 224 - pad: 1 - kernel_size: 3 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/double3x3b" - name: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/double3x3b/bn" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/double3x3b/bn/sc" - top: "inception_5b/double3x3b/bn/sc" - name: "inception_5b/double3x3b/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5a/output" - top: "inception_5b/pool" - name: "inception_5b/pool" - type: "Pooling" - pooling_param { - - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - name: "inception_5b/pool_proj" - type: "Convolution" - param { - lr_mult: 1 - decay_mult: 1 - } - convolution_param { - - num_output: 128 - pad: 0 - kernel_size: 1 - stride: 1 - weight_filler { - type: "xavier" - } - bias_term: false - } -} -layer { - bottom: "inception_5b/pool_proj" - name: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn" - type: "BatchNorm" - batch_norm_param { - - } -} -layer { - bottom: "inception_5b/pool_proj/bn" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc" - type: "Scale" - scale_param { - bias_term: true - } -} -layer { - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/pool_proj/bn/sc" - name: "inception_5b/pool_proj/bn/sc/relu" - type: "ReLU" - relu_param { - - } -} -layer { - bottom: "inception_5b/1x1/bn/sc" - bottom: "inception_5b/3x3/bn/sc" - bottom: "inception_5b/double3x3b/bn/sc" - bottom: "inception_5b/pool_proj/bn/sc" - top: "inception_5b/output" - name: "inception_5b/output" - type: "Concat" - concat_param { - - } -} -layer { - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - name: "pool5/7x7_s1" - type: "Pooling" - pooling_param { - - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - name: "loss3/classifier" - type: "InnerProduct" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - bottom: "loss3/classifier" - bottom: "label" - top: "loss3/loss" - name: "loss3/loss" - type: "SoftmaxWithLoss" - loss_weight: 1 -} -layer { - bottom: "loss3/classifier" - top: "loss3/prob" - name: "loss3/prob" - type: "Softmax" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-1" - name: "loss3/top-1" - type: "Accuracy" - include { - phase: TEST - } -} -layer { - bottom: "loss3/prob" - bottom: "label" - top: "loss3/top-5" - name: "loss3/top-5" - type: "Accuracy" - accuracy_param { - top_k: 5 - } - include { - phase: TEST - } -} diff --git a/models/intel_optimized_models/int8/inceptionv3_int8_mc.prototxt b/models/intel_optimized_models/int8/inceptionv3_int8_mc.prototxt new file mode 100644 index 000000000..f6366fd27 --- /dev/null +++ b/models/intel_optimized_models/int8/inceptionv3_int8_mc.prototxt @@ -0,0 +1,21661 @@ +# For INT8 reference +name: "InceptionV3" +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { + data_filler { + type: "constant" + value: 0.0099999997764825821 + } + shape { + dim: 64 + dim: 3 + dim: 299 + dim: 299 + } + } +} +layer { + name: "data" + type: "DummyData" + top: "label" + dummy_data_param { + data_filler { + type: "constant" + } + shape { + dim: 64 + } + } +} +layer { + name: "conv_conv2d" + type: "Convolution" + bottom: "data" + top: "conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } +} +layer { + name: "conv_batchnorm" + type: "BatchNorm" + bottom: "conv_conv2d" + top: "conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_relu" + type: "ReLU" + bottom: "conv_conv2d_bn" + top: "conv_conv2d_relu" +} +layer { + name: "conv_1_1_conv2d" + type: "Convolution" + bottom: "conv_conv2d_relu" + top: "conv_1_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 75.3399963379 + scale_out: 48.9399986267 + scale_params: 1197.69995117 + scale_params: 851.570007324 + scale_params: 139.970001221 + scale_params: 139.970001221 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 132.100006104 + scale_params: 125.419998169 + scale_params: 125.419998169 + scale_params: 125.419998169 + scale_params: 125.419998169 + scale_params: 125.419998169 + } +} +layer { + name: "conv_1_1_batchnorm" + type: "BatchNorm" + bottom: "conv_1_1_conv2d" + top: "conv_1_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_1_1_relu" + type: "ReLU" + bottom: "conv_1_1_conv2d_bn" + top: "conv_1_1_conv2d_relu" +} +layer { + name: "conv_2_2_conv2d" + type: "Convolution" + bottom: "conv_1_1_conv2d_relu" + top: "conv_2_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 48.9399986267 + scale_out: 68.1200027466 + scale_params: 815.640014648 + scale_params: 706.58001709 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + scale_params: 238.300003052 + } +} +layer { + name: "conv_2_2_batchnorm" + type: "BatchNorm" + bottom: "conv_2_2_conv2d" + top: "conv_2_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_2_2_relu" + type: "ReLU" + bottom: "conv_2_2_conv2d_bn" + top: "conv_2_2_conv2d_relu" +} +layer { + name: "pool" + type: "Pooling" + bottom: "conv_2_2_conv2d_relu" + top: "pool" + pooling_param { + pool: MAX + pad: 0 + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv_3_3_conv2d" + type: "Convolution" + bottom: "pool" + top: "conv_3_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 80 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 68.1200027466 + scale_out: 74.3199996948 + scale_params: 335.029998779 + scale_params: 335.029998779 + scale_params: 320.880004883 + scale_params: 320.880004883 + scale_params: 266.010009766 + scale_params: 262.850006104 + scale_params: 262.850006104 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 185.130004883 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 174.11000061 + scale_params: 115.459999084 + scale_params: 115.459999084 + scale_params: 115.459999084 + scale_params: 115.459999084 + scale_params: 115.459999084 + } +} +layer { + name: "conv_3_3_batchnorm" + type: "BatchNorm" + bottom: "conv_3_3_conv2d" + top: "conv_3_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_3_3_relu" + type: "ReLU" + bottom: "conv_3_3_conv2d_bn" + top: "conv_3_3_conv2d_relu" +} +layer { + name: "conv_4_4_conv2d" + type: "Convolution" + bottom: "conv_3_3_conv2d_relu" + top: "conv_4_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 74.3199996948 + scale_out: 124.080001831 + scale_params: 1174.15002441 + scale_params: 1174.15002441 + scale_params: 589.08001709 + scale_params: 589.08001709 + scale_params: 589.08001709 + scale_params: 589.08001709 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 584.549987793 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + scale_params: 490.480010986 + } +} +layer { + name: "conv_4_4_batchnorm" + type: "BatchNorm" + bottom: "conv_4_4_conv2d" + top: "conv_4_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_4_4_relu" + type: "ReLU" + bottom: "conv_4_4_conv2d_bn" + top: "conv_4_4_conv2d_relu" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv_4_4_conv2d_relu" + top: "pool1" + pooling_param { + pool: MAX + pad: 0 + kernel_size: 3 + stride: 2 + } +} +layer { + name: "mixed_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 124.080001831 + scale_out: 125.970001221 + scale_params: 1075.26000977 + scale_params: 490.160003662 + scale_params: 490.160003662 + scale_params: 490.160003662 + scale_params: 363.510009766 + scale_params: 363.510009766 + scale_params: 363.510009766 + scale_params: 363.510009766 + scale_params: 363.510009766 + scale_params: 363.510009766 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 340.410003662 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + scale_params: 239.179992676 + } +} +layer { + name: "mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_conv_conv2d" + top: "mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_conv_relu" + type: "ReLU" + bottom: "mixed_conv_conv2d_bn" + top: "mixed_conv_conv2d_relu" +} +layer { + name: "mixed_tower_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 124.080001831 + scale_out: 159.11000061 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 373.190002441 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + scale_params: 303.589996338 + } +} +layer { + name: "mixed_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_conv_conv2d" + top: "mixed_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_conv_relu" + type: "ReLU" + bottom: "mixed_tower_conv_conv2d_bn" + top: "mixed_tower_conv_conv2d_relu" +} +layer { + name: "mixed_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_tower_conv_conv2d_relu" + top: "mixed_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 159.11000061 + scale_out: 139.080001831 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 580.619995117 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 535.75 + scale_params: 513.969970703 + scale_params: 513.969970703 + scale_params: 513.969970703 + scale_params: 513.969970703 + scale_params: 513.969970703 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + scale_params: 495.859985352 + } +} +layer { + name: "mixed_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_conv_1_conv2d" + top: "mixed_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_tower_conv_1_conv2d_bn" + top: "mixed_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 124.080001831 + scale_out: 146.25 + scale_params: 726.83001709 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 357.709991455 + scale_params: 330.630004883 + scale_params: 330.630004883 + scale_params: 330.630004883 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 269.170013428 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + scale_params: 215.38999939 + } +} +layer { + name: "mixed_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_conv2d" + top: "mixed_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_conv2d_bn" + top: "mixed_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_tower_1_conv_conv2d_relu" + top: "mixed_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 146.25 + scale_out: 171.210006714 + scale_params: 689.650024414 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 641.940002441 + scale_params: 635.679992676 + scale_params: 635.679992676 + scale_params: 635.679992676 + scale_params: 578.729980469 + scale_params: 578.729980469 + scale_params: 578.729980469 + scale_params: 578.729980469 + scale_params: 578.729980469 + scale_params: 484.790008545 + scale_params: 484.790008545 + scale_params: 484.790008545 + scale_params: 484.790008545 + scale_params: 484.790008545 + scale_params: 443.390014648 + scale_params: 443.390014648 + scale_params: 443.390014648 + scale_params: 443.390014648 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 329.670013428 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + scale_params: 322.309997559 + } +} +layer { + name: "mixed_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_1_conv2d" + top: "mixed_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_1_conv2d_bn" + top: "mixed_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_tower_1_conv_1_conv2d_relu" + top: "mixed_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 171.210006714 + scale_out: 116.150001526 + scale_params: 757.599975586 + scale_params: 757.599975586 + scale_params: 580.539978027 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 378.410003662 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 316.609985352 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + scale_params: 303.209991455 + } +} +layer { + name: "mixed_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_2_conv2d" + top: "mixed_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_2_conv2d_bn" + top: "mixed_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_pool" + type: "Pooling" + bottom: "pool1" + top: "AVE_pool_mixed_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_pool" + top: "mixed_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 164.720001221 + scale_out: 175.770004272 + scale_params: 515.729980469 + scale_params: 351.209991455 + scale_params: 351.209991455 + scale_params: 351.209991455 + scale_params: 351.209991455 + scale_params: 260.829986572 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + scale_params: 160.130004883 + } +} +layer { + name: "mixed_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_2_conv_conv2d" + top: "mixed_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_tower_2_conv_conv2d_bn" + top: "mixed_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_chconcat" + type: "Concat" + bottom: "mixed_conv_conv2d_relu" + bottom: "mixed_tower_conv_1_conv2d_relu" + bottom: "mixed_tower_1_conv_2_conv2d_relu" + bottom: "mixed_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 116.150001526 + scale_out: 128.270004272 + scale_params: 415.790008545 + scale_params: 415.790008545 + scale_params: 415.790008545 + scale_params: 415.790008545 + scale_params: 285.5 + scale_params: 285.5 + scale_params: 285.5 + scale_params: 285.5 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 267.730010986 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + scale_params: 229.300003052 + } +} +layer { + name: "mixed_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_conv_conv2d" + top: "mixed_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_conv_relu" + type: "ReLU" + bottom: "mixed_1_conv_conv2d_bn" + top: "mixed_1_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 116.150001526 + scale_out: 97.9100036621 + scale_params: 267.690002441 + scale_params: 267.690002441 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 191.320007324 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + scale_params: 171.490005493 + } +} +layer { + name: "mixed_1_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_conv_conv2d" + top: "mixed_1_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_conv_conv2d_bn" + top: "mixed_1_tower_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_conv_conv2d_relu" + top: "mixed_1_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 97.9100036621 + scale_out: 108.839996338 + scale_params: 784.190002441 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 577.450012207 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 533.349975586 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + scale_params: 516.630004883 + } +} +layer { + name: "mixed_1_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_conv_1_conv2d" + top: "mixed_1_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_1_tower_conv_1_conv2d_bn" + top: "mixed_1_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 116.150001526 + scale_out: 155.809997559 + scale_params: 625.460021973 + scale_params: 484.019989014 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 359.820007324 + scale_params: 330.320007324 + scale_params: 330.320007324 + scale_params: 330.320007324 + scale_params: 330.320007324 + scale_params: 330.320007324 + scale_params: 330.320007324 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 325.0 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 317.829986572 + scale_params: 224.949996948 + scale_params: 224.949996948 + scale_params: 224.949996948 + scale_params: 224.949996948 + scale_params: 224.949996948 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + scale_params: 194.460006714 + } +} +layer { + name: "mixed_1_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_conv2d" + top: "mixed_1_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_conv2d_bn" + top: "mixed_1_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_1_conv_conv2d_relu" + top: "mixed_1_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 155.809997559 + scale_out: 202.300003052 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 389.649993896 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + scale_params: 243.229995728 + } +} +layer { + name: "mixed_1_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_1_conv2d" + top: "mixed_1_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_1_conv2d_bn" + top: "mixed_1_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_1_conv_1_conv2d_relu" + top: "mixed_1_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 202.300003052 + scale_out: 106.050003052 + scale_params: 603.380004883 + scale_params: 603.380004883 + scale_params: 603.380004883 + scale_params: 603.380004883 + scale_params: 578.0 + scale_params: 578.0 + scale_params: 578.0 + scale_params: 377.230010986 + scale_params: 377.230010986 + scale_params: 377.230010986 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 321.070007324 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 252.940002441 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + scale_params: 90.2200012207 + } +} +layer { + name: "mixed_1_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_2_conv2d" + top: "mixed_1_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_2_conv2d_bn" + top: "mixed_1_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_1_pool" + type: "Pooling" + bottom: "ch_concat_mixed_chconcat" + top: "AVE_pool_mixed_1_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_1_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_1_pool" + top: "mixed_1_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 161.210006714 + scale_out: 200.88999939 + scale_params: 254.220001221 + scale_params: 254.220001221 + scale_params: 254.220001221 + scale_params: 235.490005493 + scale_params: 235.490005493 + scale_params: 235.490005493 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 225.779998779 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 222.869995117 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + scale_params: 146.809997559 + } +} +layer { + name: "mixed_1_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_2_conv_conv2d" + top: "mixed_1_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_2_conv_conv2d_bn" + top: "mixed_1_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_1_chconcat" + type: "Concat" + bottom: "mixed_1_conv_conv2d_relu" + bottom: "mixed_1_tower_conv_1_conv2d_relu" + bottom: "mixed_1_tower_1_conv_2_conv2d_relu" + bottom: "mixed_1_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_1_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_2_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 106.050003052 + scale_out: 158.509994507 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + scale_params: 251.970001221 + } +} +layer { + name: "mixed_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_conv_conv2d" + top: "mixed_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_conv_relu" + type: "ReLU" + bottom: "mixed_2_conv_conv2d_bn" + top: "mixed_2_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 106.050003052 + scale_out: 101.940002441 + scale_params: 232.779998779 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + scale_params: 211.789993286 + } +} +layer { + name: "mixed_2_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_conv_conv2d" + top: "mixed_2_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_conv_conv2d_bn" + top: "mixed_2_tower_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_conv_conv2d_relu" + top: "mixed_2_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 101.940002441 + scale_out: 124.5 + scale_params: 1458.35998535 + scale_params: 1191.7800293 + scale_params: 1191.7800293 + scale_params: 952.659973145 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 651.349975586 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + scale_params: 537.25 + } +} +layer { + name: "mixed_2_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_conv_1_conv2d" + top: "mixed_2_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_2_tower_conv_1_conv2d_bn" + top: "mixed_2_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 106.050003052 + scale_out: 160.86000061 + scale_params: 584.83001709 + scale_params: 441.709991455 + scale_params: 406.070007324 + scale_params: 406.070007324 + scale_params: 406.070007324 + scale_params: 406.070007324 + scale_params: 385.579986572 + scale_params: 385.579986572 + scale_params: 385.579986572 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 276.200012207 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + scale_params: 225.440002441 + } +} +layer { + name: "mixed_2_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_conv2d" + top: "mixed_2_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_conv2d_bn" + top: "mixed_2_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_1_conv_conv2d_relu" + top: "mixed_2_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 160.86000061 + scale_out: 126.050003052 + scale_params: 643.469970703 + scale_params: 643.469970703 + scale_params: 643.469970703 + scale_params: 643.469970703 + scale_params: 643.469970703 + scale_params: 643.469970703 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 511.720001221 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + scale_params: 141.570007324 + } +} +layer { + name: "mixed_2_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_1_conv2d" + top: "mixed_2_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_1_conv2d_bn" + top: "mixed_2_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_1_conv_1_conv2d_relu" + top: "mixed_2_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 126.050003052 + scale_out: 131.869995117 + scale_params: 824.770019531 + scale_params: 817.599975586 + scale_params: 817.599975586 + scale_params: 817.599975586 + scale_params: 734.119995117 + scale_params: 734.119995117 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 602.989990234 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 581.159973145 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 453.470001221 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + scale_params: 423.859985352 + } +} +layer { + name: "mixed_2_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_2_conv2d" + top: "mixed_2_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_2_conv2d_bn" + top: "mixed_2_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_2_pool" + type: "Pooling" + bottom: "ch_concat_mixed_1_chconcat" + top: "AVE_pool_mixed_2_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_2_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_2_pool" + top: "mixed_2_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 170.679992676 + scale_out: 192.61000061 + scale_params: 592.08001709 + scale_params: 267.579986572 + scale_params: 214.550003052 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + scale_params: 127.099998474 + } +} +layer { + name: "mixed_2_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_2_conv_conv2d" + top: "mixed_2_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_2_conv_conv2d_bn" + top: "mixed_2_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_2_chconcat" + type: "Concat" + bottom: "mixed_2_conv_conv2d_relu" + bottom: "mixed_2_tower_conv_1_conv2d_relu" + bottom: "mixed_2_tower_1_conv_2_conv2d_relu" + bottom: "mixed_2_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_2_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_3_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_2_chconcat" + top: "mixed_3_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 124.5 + scale_out: 154.25 + scale_params: 1259.27001953 + scale_params: 1259.27001953 + scale_params: 1259.27001953 + scale_params: 1259.27001953 + scale_params: 1259.27001953 + scale_params: 1163.06005859 + scale_params: 1163.06005859 + scale_params: 1163.06005859 + scale_params: 1071.64001465 + scale_params: 1071.64001465 + scale_params: 1071.64001465 + scale_params: 910.219970703 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 658.880004883 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 545.030029297 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 503.350006104 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 483.890014648 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 356.760009766 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + scale_params: 251.36000061 + } +} +layer { + name: "mixed_3_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_conv_conv2d" + top: "mixed_3_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_conv_relu" + type: "ReLU" + bottom: "mixed_3_conv_conv2d_bn" + top: "mixed_3_conv_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_2_chconcat" + top: "mixed_3_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 124.5 + scale_out: 193.350006104 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 450.290008545 + scale_params: 398.359985352 + scale_params: 398.359985352 + scale_params: 398.359985352 + scale_params: 349.100006104 + scale_params: 349.100006104 + scale_params: 349.100006104 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + scale_params: 278.760009766 + } +} +layer { + name: "mixed_3_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_conv2d" + top: "mixed_3_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_conv2d_bn" + top: "mixed_3_tower_conv_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_3_tower_conv_conv2d_relu" + top: "mixed_3_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 193.350006104 + scale_out: 266.5 + scale_params: 1482.88000488 + scale_params: 991.659973145 + scale_params: 962.030029297 + scale_params: 962.030029297 + scale_params: 962.030029297 + scale_params: 899.570007324 + scale_params: 875.929992676 + scale_params: 875.929992676 + scale_params: 700.309997559 + scale_params: 700.309997559 + scale_params: 700.309997559 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 588.789978027 + scale_params: 587.789978027 + scale_params: 587.789978027 + scale_params: 587.789978027 + scale_params: 587.789978027 + scale_params: 587.789978027 + scale_params: 587.789978027 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 568.119995117 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + scale_params: 457.459991455 + } +} +layer { + name: "mixed_3_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_1_conv2d" + top: "mixed_3_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_1_conv2d_bn" + top: "mixed_3_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_3_tower_conv_1_conv2d_relu" + top: "mixed_3_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 266.5 + scale_out: 118.0 + scale_params: 673.359985352 + scale_params: 673.359985352 + scale_params: 673.359985352 + scale_params: 673.359985352 + scale_params: 673.359985352 + scale_params: 522.650024414 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 452.559997559 + scale_params: 427.170013428 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + scale_params: 270.910003662 + } +} +layer { + name: "mixed_3_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_2_conv2d" + top: "mixed_3_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_2_conv2d_bn" + top: "mixed_3_tower_conv_2_conv2d_relu" +} +layer { + name: "max_pool_mixed_3_pool" + type: "Pooling" + bottom: "ch_concat_mixed_2_chconcat" + top: "max_pool_mixed_3_pool" + pooling_param { + pool: MAX + pad: 0 + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ch_concat_mixed_3_chconcat" + type: "Concat" + bottom: "max_pool_mixed_3_pool" + bottom: "mixed_3_conv_conv2d_relu" + bottom: "mixed_3_tower_conv_2_conv2d_relu" + top: "ch_concat_mixed_3_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_4_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 118.0 + scale_out: 152.289993286 + scale_params: 579.729980469 + scale_params: 579.729980469 + scale_params: 579.729980469 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 223.300003052 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 157.63999939 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + } +} +layer { + name: "mixed_4_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_conv_conv2d" + top: "mixed_4_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_conv_relu" + type: "ReLU" + bottom: "mixed_4_conv_conv2d_bn" + top: "mixed_4_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 118.0 + scale_out: 110.699996948 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 451.25 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 325.950012207 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 220.229995728 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + scale_params: 182.440002441 + } +} +layer { + name: "mixed_4_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_conv2d" + top: "mixed_4_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_conv2d_bn" + top: "mixed_4_tower_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_conv_conv2d_relu" + top: "mixed_4_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 110.699996948 + scale_out: 96.4899978638 + scale_params: 814.630004883 + scale_params: 734.91998291 + scale_params: 734.91998291 + scale_params: 734.91998291 + scale_params: 651.390014648 + scale_params: 647.0 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 457.440002441 + scale_params: 396.420013428 + scale_params: 396.420013428 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 192.36000061 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + scale_params: 157.910003662 + } +} +layer { + name: "mixed_4_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_1_conv2d" + top: "mixed_4_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_1_conv2d_bn" + top: "mixed_4_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_conv_1_conv2d_relu" + top: "mixed_4_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 96.4899978638 + scale_out: 125.279998779 + scale_params: 922.549987793 + scale_params: 689.109985352 + scale_params: 562.710021973 + scale_params: 411.040008545 + scale_params: 411.040008545 + scale_params: 411.040008545 + scale_params: 411.040008545 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 272.049987793 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + scale_params: 241.160003662 + } +} +layer { + name: "mixed_4_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_2_conv2d" + top: "mixed_4_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_2_conv2d_bn" + top: "mixed_4_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 118.0 + scale_out: 292.529998779 + scale_params: 984.33001709 + scale_params: 564.83001709 + scale_params: 564.83001709 + scale_params: 483.299987793 + scale_params: 483.299987793 + scale_params: 483.299987793 + scale_params: 483.299987793 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.380004883 + scale_params: 413.239990234 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 291.630004883 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + scale_params: 284.149993896 + } +} +layer { + name: "mixed_4_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_conv2d" + top: "mixed_4_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_conv2d_bn" + top: "mixed_4_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_conv2d_relu" + top: "mixed_4_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 292.529998779 + scale_out: 252.419998169 + scale_params: 1674.16003418 + scale_params: 1362.93005371 + scale_params: 1162.48999023 + scale_params: 1162.48999023 + scale_params: 1162.48999023 + scale_params: 1162.48999023 + scale_params: 1162.48999023 + scale_params: 329.600006104 + scale_params: 329.600006104 + scale_params: 329.600006104 + scale_params: 329.600006104 + scale_params: 329.600006104 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + scale_params: 290.660003662 + } +} +layer { + name: "mixed_4_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_1_conv2d" + top: "mixed_4_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_1_conv2d_bn" + top: "mixed_4_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_1_conv2d_relu" + top: "mixed_4_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 252.419998169 + scale_out: 139.050003052 + scale_params: 356.890014648 + scale_params: 356.890014648 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + scale_params: 173.460006714 + } +} +layer { + name: "mixed_4_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_2_conv2d" + top: "mixed_4_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_2_conv2d_bn" + top: "mixed_4_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_2_conv2d_relu" + top: "mixed_4_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 139.050003052 + scale_out: 159.149993896 + scale_params: 894.380004883 + scale_params: 860.260009766 + scale_params: 758.400024414 + scale_params: 758.400024414 + scale_params: 758.400024414 + scale_params: 758.400024414 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 604.070007324 + scale_params: 454.059997559 + scale_params: 454.059997559 + scale_params: 427.869995117 + scale_params: 427.869995117 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 411.049987793 + scale_params: 391.299987793 + scale_params: 391.299987793 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 310.720001221 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + scale_params: 185.009994507 + } +} +layer { + name: "mixed_4_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_3_conv2d" + top: "mixed_4_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_3_conv2d_bn" + top: "mixed_4_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_3_conv2d_relu" + top: "mixed_4_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 159.149993896 + scale_out: 153.809997559 + scale_params: 1277.7800293 + scale_params: 1277.7800293 + scale_params: 1099.86999512 + scale_params: 777.75 + scale_params: 777.75 + scale_params: 777.75 + scale_params: 566.440002441 + scale_params: 566.440002441 + scale_params: 566.440002441 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 250.470001221 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + scale_params: 206.669998169 + } +} +layer { + name: "mixed_4_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_4_conv2d" + top: "mixed_4_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_4_conv2d_bn" + top: "mixed_4_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_4_pool" + type: "Pooling" + bottom: "ch_concat_mixed_3_chconcat" + top: "AVE_pool_mixed_4_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_4_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_4_pool" + top: "mixed_4_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 202.369995117 + scale_out: 187.529998779 + scale_params: 329.079986572 + scale_params: 309.899993896 + scale_params: 309.899993896 + scale_params: 309.899993896 + scale_params: 309.899993896 + scale_params: 309.899993896 + scale_params: 279.970001221 + scale_params: 279.970001221 + scale_params: 279.970001221 + scale_params: 209.399993896 + scale_params: 209.399993896 + scale_params: 209.399993896 + scale_params: 209.399993896 + scale_params: 209.399993896 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 146.779998779 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + scale_params: 116.709999084 + } +} +layer { + name: "mixed_4_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_2_conv_conv2d" + top: "mixed_4_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_2_conv_conv2d_bn" + top: "mixed_4_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_4_chconcat" + type: "Concat" + bottom: "mixed_4_conv_conv2d_relu" + bottom: "mixed_4_tower_conv_2_conv2d_relu" + bottom: "mixed_4_tower_1_conv_4_conv2d_relu" + bottom: "mixed_4_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_4_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_5_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 125.279998779 + scale_out: 139.149993896 + scale_params: 627.440002441 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 398.950012207 + scale_params: 383.429992676 + scale_params: 383.429992676 + scale_params: 374.200012207 + scale_params: 374.200012207 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 351.609985352 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 218.440002441 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + scale_params: 192.5 + } +} +layer { + name: "mixed_5_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_conv_conv2d" + top: "mixed_5_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_conv_relu" + type: "ReLU" + bottom: "mixed_5_conv_conv2d_bn" + top: "mixed_5_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 125.279998779 + scale_out: 109.88999939 + scale_params: 922.390014648 + scale_params: 922.390014648 + scale_params: 772.16998291 + scale_params: 772.16998291 + scale_params: 767.780029297 + scale_params: 767.780029297 + scale_params: 728.460021973 + scale_params: 665.340026855 + scale_params: 665.340026855 + scale_params: 510.410003662 + scale_params: 510.410003662 + scale_params: 510.410003662 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 321.350006104 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 303.089996338 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 255.020004272 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + scale_params: 252.080001831 + } +} +layer { + name: "mixed_5_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_conv2d" + top: "mixed_5_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_conv2d_bn" + top: "mixed_5_tower_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_conv_conv2d_relu" + top: "mixed_5_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 109.88999939 + scale_out: 108.779998779 + scale_params: 434.25 + scale_params: 434.25 + scale_params: 434.25 + scale_params: 434.25 + scale_params: 434.25 + scale_params: 365.299987793 + scale_params: 365.299987793 + scale_params: 352.119995117 + scale_params: 352.119995117 + scale_params: 352.119995117 + scale_params: 333.920013428 + scale_params: 333.920013428 + scale_params: 333.920013428 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 270.279998779 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 243.309997559 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 222.470001221 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + scale_params: 196.350006104 + } +} +layer { + name: "mixed_5_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_1_conv2d" + top: "mixed_5_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_1_conv2d_bn" + top: "mixed_5_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_conv_1_conv2d_relu" + top: "mixed_5_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 108.779998779 + scale_out: 94.7200012207 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 488.070007324 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 364.700012207 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + scale_params: 218.880004883 + } +} +layer { + name: "mixed_5_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_2_conv2d" + top: "mixed_5_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_2_conv2d_bn" + top: "mixed_5_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 125.279998779 + scale_out: 215.61000061 + scale_params: 836.309997559 + scale_params: 547.359985352 + scale_params: 547.359985352 + scale_params: 547.359985352 + scale_params: 547.359985352 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + scale_params: 294.489990234 + } +} +layer { + name: "mixed_5_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_conv2d" + top: "mixed_5_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_conv2d_bn" + top: "mixed_5_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_conv2d_relu" + top: "mixed_5_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 215.61000061 + scale_out: 145.259994507 + scale_params: 1379.15002441 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 269.910003662 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + scale_params: 186.509994507 + } +} +layer { + name: "mixed_5_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_1_conv2d" + top: "mixed_5_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_1_conv2d_bn" + top: "mixed_5_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_1_conv2d_relu" + top: "mixed_5_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 145.259994507 + scale_out: 125.019996643 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 330.720001221 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 302.709991455 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + scale_params: 243.020004272 + } +} +layer { + name: "mixed_5_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_2_conv2d" + top: "mixed_5_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_2_conv2d_bn" + top: "mixed_5_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_2_conv2d_relu" + top: "mixed_5_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 125.019996643 + scale_out: 164.699996948 + scale_params: 1252.10998535 + scale_params: 662.909973145 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 410.440002441 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + scale_params: 320.420013428 + } +} +layer { + name: "mixed_5_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_3_conv2d" + top: "mixed_5_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_3_conv2d_bn" + top: "mixed_5_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_3_conv2d_relu" + top: "mixed_5_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 164.699996948 + scale_out: 156.759994507 + scale_params: 997.809997559 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 706.950012207 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + scale_params: 216.5 + } +} +layer { + name: "mixed_5_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_4_conv2d" + top: "mixed_5_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_4_conv2d_bn" + top: "mixed_5_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_5_pool" + type: "Pooling" + bottom: "ch_concat_mixed_4_chconcat" + top: "AVE_pool_mixed_5_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_5_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_5_pool" + top: "mixed_5_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 204.699996948 + scale_out: 129.899993896 + scale_params: 309.980010986 + scale_params: 309.980010986 + scale_params: 309.980010986 + scale_params: 309.980010986 + scale_params: 309.980010986 + scale_params: 309.980010986 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 237.949996948 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 188.740005493 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + scale_params: 149.190002441 + } +} +layer { + name: "mixed_5_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_2_conv_conv2d" + top: "mixed_5_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_2_conv_conv2d_bn" + top: "mixed_5_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_5_chconcat" + type: "Concat" + bottom: "mixed_5_conv_conv2d_relu" + bottom: "mixed_5_tower_conv_2_conv2d_relu" + bottom: "mixed_5_tower_1_conv_4_conv2d_relu" + bottom: "mixed_5_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_5_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_6_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 94.7200012207 + scale_out: 135.210006714 + scale_params: 341.549987793 + scale_params: 341.549987793 + scale_params: 341.549987793 + scale_params: 341.549987793 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.790008545 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 336.429992676 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 321.220001221 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 211.63999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + scale_params: 165.38999939 + } +} +layer { + name: "mixed_6_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_conv_conv2d" + top: "mixed_6_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_conv_relu" + type: "ReLU" + bottom: "mixed_6_conv_conv2d_bn" + top: "mixed_6_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 94.7200012207 + scale_out: 145.830001831 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 408.989990234 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 228.910003662 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + scale_params: 194.589996338 + } +} +layer { + name: "mixed_6_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_conv2d" + top: "mixed_6_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_conv2d_bn" + top: "mixed_6_tower_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_conv_conv2d_relu" + top: "mixed_6_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 145.830001831 + scale_out: 142.979995728 + scale_params: 894.270019531 + scale_params: 537.200012207 + scale_params: 537.200012207 + scale_params: 537.200012207 + scale_params: 537.200012207 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 268.660003662 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + scale_params: 200.419998169 + } +} +layer { + name: "mixed_6_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_1_conv2d" + top: "mixed_6_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_1_conv2d_bn" + top: "mixed_6_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_conv_1_conv2d_relu" + top: "mixed_6_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 142.979995728 + scale_out: 144.089996338 + scale_params: 636.270019531 + scale_params: 636.270019531 + scale_params: 636.270019531 + scale_params: 466.279998779 + scale_params: 466.279998779 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 303.910003662 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + scale_params: 248.820007324 + } +} +layer { + name: "mixed_6_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_2_conv2d" + top: "mixed_6_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_2_conv2d_bn" + top: "mixed_6_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 94.7200012207 + scale_out: 180.13999939 + scale_params: 788.809997559 + scale_params: 625.400024414 + scale_params: 566.320007324 + scale_params: 486.549987793 + scale_params: 486.549987793 + scale_params: 486.549987793 + scale_params: 486.549987793 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 347.850006104 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + scale_params: 276.739990234 + } +} +layer { + name: "mixed_6_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_conv2d" + top: "mixed_6_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_conv2d_bn" + top: "mixed_6_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_conv2d_relu" + top: "mixed_6_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 180.13999939 + scale_out: 104.069999695 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 249.839996338 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + scale_params: 231.600006104 + } +} +layer { + name: "mixed_6_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_1_conv2d" + top: "mixed_6_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_1_conv2d_bn" + top: "mixed_6_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_1_conv2d_relu" + top: "mixed_6_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 104.069999695 + scale_out: 117.370002747 + scale_params: 987.440002441 + scale_params: 593.549987793 + scale_params: 593.549987793 + scale_params: 593.549987793 + scale_params: 360.799987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 350.549987793 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + scale_params: 192.809997559 + } +} +layer { + name: "mixed_6_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_2_conv2d" + top: "mixed_6_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_2_conv2d_bn" + top: "mixed_6_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_2_conv2d_relu" + top: "mixed_6_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 117.370002747 + scale_out: 109.230003357 + scale_params: 600.679992676 + scale_params: 600.679992676 + scale_params: 600.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 376.679992676 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 313.480010986 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + scale_params: 210.199996948 + } +} +layer { + name: "mixed_6_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_3_conv2d" + top: "mixed_6_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_3_conv2d_bn" + top: "mixed_6_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_3_conv2d_relu" + top: "mixed_6_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 109.230003357 + scale_out: 174.460006714 + scale_params: 1125.51000977 + scale_params: 801.91998291 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + scale_params: 312.559997559 + } +} +layer { + name: "mixed_6_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_4_conv2d" + top: "mixed_6_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_4_conv2d_bn" + top: "mixed_6_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_6_pool" + type: "Pooling" + bottom: "ch_concat_mixed_5_chconcat" + top: "AVE_pool_mixed_6_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_6_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_6_pool" + top: "mixed_6_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 145.119995117 + scale_out: 208.850006104 + scale_params: 310.029998779 + scale_params: 310.029998779 + scale_params: 290.820007324 + scale_params: 290.820007324 + scale_params: 290.820007324 + scale_params: 290.820007324 + scale_params: 290.820007324 + scale_params: 290.820007324 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 187.880004883 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + scale_params: 119.339996338 + } +} +layer { + name: "mixed_6_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_2_conv_conv2d" + top: "mixed_6_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_2_conv_conv2d_bn" + top: "mixed_6_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_6_chconcat" + type: "Concat" + bottom: "mixed_6_conv_conv2d_relu" + bottom: "mixed_6_tower_conv_2_conv2d_relu" + bottom: "mixed_6_tower_1_conv_4_conv2d_relu" + bottom: "mixed_6_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_6_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_7_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 135.210006714 + scale_out: 135.440002441 + scale_params: 667.599975586 + scale_params: 523.429992676 + scale_params: 523.429992676 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.399993896 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 369.179992676 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 309.859985352 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 288.519989014 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + scale_params: 252.38999939 + } +} +layer { + name: "mixed_7_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_conv_conv2d" + top: "mixed_7_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_conv_relu" + type: "ReLU" + bottom: "mixed_7_conv_conv2d_bn" + top: "mixed_7_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 135.210006714 + scale_out: 130.25 + scale_params: 774.349975586 + scale_params: 759.890014648 + scale_params: 644.349975586 + scale_params: 644.349975586 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 402.410003662 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + scale_params: 369.850006104 + } +} +layer { + name: "mixed_7_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_conv2d" + top: "mixed_7_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_conv2d_bn" + top: "mixed_7_tower_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_conv_conv2d_relu" + top: "mixed_7_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 130.25 + scale_out: 105.180000305 + scale_params: 921.659973145 + scale_params: 436.670013428 + scale_params: 436.670013428 + scale_params: 436.670013428 + scale_params: 436.670013428 + scale_params: 436.670013428 + scale_params: 436.670013428 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 337.739990234 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 297.579986572 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + scale_params: 260.700012207 + } +} +layer { + name: "mixed_7_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_1_conv2d" + top: "mixed_7_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_1_conv2d_bn" + top: "mixed_7_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_conv_1_conv2d_relu" + top: "mixed_7_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 105.180000305 + scale_out: 153.440002441 + scale_params: 495.459991455 + scale_params: 495.459991455 + scale_params: 495.459991455 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + scale_params: 316.489990234 + } +} +layer { + name: "mixed_7_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_2_conv2d" + top: "mixed_7_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_2_conv2d_bn" + top: "mixed_7_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 135.210006714 + scale_out: 160.740005493 + scale_params: 961.559997559 + scale_params: 552.58001709 + scale_params: 552.58001709 + scale_params: 552.58001709 + scale_params: 552.58001709 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 413.359985352 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 400.920013428 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 328.799987793 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + scale_params: 264.869995117 + } +} +layer { + name: "mixed_7_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_conv2d" + top: "mixed_7_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_conv2d_bn" + top: "mixed_7_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_conv2d_relu" + top: "mixed_7_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 160.740005493 + scale_out: 145.690002441 + scale_params: 763.770019531 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 549.91998291 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 373.369995117 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 331.209991455 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + scale_params: 273.700012207 + } +} +layer { + name: "mixed_7_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_1_conv2d" + top: "mixed_7_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_1_conv2d_bn" + top: "mixed_7_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_1_conv2d_relu" + top: "mixed_7_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 145.690002441 + scale_out: 136.080001831 + scale_params: 537.679992676 + scale_params: 510.660003662 + scale_params: 510.660003662 + scale_params: 510.660003662 + scale_params: 510.660003662 + scale_params: 510.660003662 + scale_params: 510.660003662 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 397.320007324 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 354.179992676 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 295.829986572 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + scale_params: 273.950012207 + } +} +layer { + name: "mixed_7_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_2_conv2d" + top: "mixed_7_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_2_conv2d_bn" + top: "mixed_7_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_2_conv2d_relu" + top: "mixed_7_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 136.080001831 + scale_out: 138.130004883 + scale_params: 805.650024414 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 490.149993896 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 469.059997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 462.809997559 + scale_params: 324.410003662 + scale_params: 324.410003662 + scale_params: 324.410003662 + scale_params: 324.410003662 + scale_params: 324.410003662 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + scale_params: 271.679992676 + } +} +layer { + name: "mixed_7_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_3_conv2d" + top: "mixed_7_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_3_conv2d_bn" + top: "mixed_7_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_3_conv2d_relu" + top: "mixed_7_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 138.130004883 + scale_out: 166.729995728 + scale_params: 735.270019531 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 549.729980469 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + scale_params: 331.309997559 + } +} +layer { + name: "mixed_7_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_4_conv2d" + top: "mixed_7_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_4_conv2d_bn" + top: "mixed_7_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_7_pool" + type: "Pooling" + bottom: "ch_concat_mixed_6_chconcat" + top: "AVE_pool_mixed_7_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_7_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_7_pool" + top: "mixed_7_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 233.350006104 + scale_out: 188.050003052 + scale_params: 435.130004883 + scale_params: 405.970001221 + scale_params: 405.970001221 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 319.600006104 + scale_params: 277.410003662 + scale_params: 277.410003662 + scale_params: 277.410003662 + scale_params: 277.410003662 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 238.690002441 + scale_params: 236.86000061 + scale_params: 236.86000061 + scale_params: 236.86000061 + scale_params: 236.86000061 + scale_params: 236.86000061 + scale_params: 236.86000061 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 218.429992676 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 206.710006714 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 152.779998779 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + scale_params: 129.759994507 + } +} +layer { + name: "mixed_7_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_2_conv_conv2d" + top: "mixed_7_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_2_conv_conv2d_bn" + top: "mixed_7_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_7_chconcat" + type: "Concat" + bottom: "mixed_7_conv_conv2d_relu" + bottom: "mixed_7_tower_conv_2_conv2d_relu" + bottom: "mixed_7_tower_1_conv_4_conv2d_relu" + bottom: "mixed_7_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_7_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_8_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_7_chconcat" + top: "mixed_8_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 135.440002441 + scale_out: 151.75 + scale_params: 448.070007324 + scale_params: 406.059997559 + scale_params: 312.269989014 + scale_params: 312.269989014 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 257.5 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + scale_params: 245.309997559 + } +} +layer { + name: "mixed_8_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_conv_conv2d" + top: "mixed_8_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_conv_relu" + type: "ReLU" + bottom: "mixed_8_tower_conv_conv2d_bn" + top: "mixed_8_tower_conv_conv2d_relu" +} +layer { + name: "mixed_8_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_conv_conv2d_relu" + top: "mixed_8_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 151.75 + scale_out: 81.1500015259 + scale_params: 470.179992676 + scale_params: 322.140014648 + scale_params: 322.140014648 + scale_params: 322.140014648 + scale_params: 322.140014648 + scale_params: 322.140014648 + scale_params: 322.140014648 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 192.240005493 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 184.080001831 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 173.119995117 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + scale_params: 171.190002441 + } +} +layer { + name: "mixed_8_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_conv_1_conv2d" + top: "mixed_8_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_8_tower_conv_1_conv2d_bn" + top: "mixed_8_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_7_chconcat" + top: "mixed_8_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 135.440002441 + scale_out: 148.070007324 + scale_params: 422.239990234 + scale_params: 422.239990234 + scale_params: 422.239990234 + scale_params: 355.790008545 + scale_params: 355.790008545 + scale_params: 293.489990234 + scale_params: 293.489990234 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 188.669998169 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 174.350006104 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + scale_params: 135.559997559 + } +} +layer { + name: "mixed_8_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_conv2d" + top: "mixed_8_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_conv2d_bn" + top: "mixed_8_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_conv2d_relu" + top: "mixed_8_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 148.070007324 + scale_out: 114.86000061 + scale_params: 701.070007324 + scale_params: 673.960021973 + scale_params: 673.960021973 + scale_params: 673.960021973 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 226.820007324 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 186.059997559 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + scale_params: 123.540000916 + } +} +layer { + name: "mixed_8_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_1_conv2d" + top: "mixed_8_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_1_conv2d_bn" + top: "mixed_8_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_1_conv2d_relu" + top: "mixed_8_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 114.86000061 + scale_out: 193.179992676 + scale_params: 1201.88000488 + scale_params: 1034.05004883 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 621.030029297 + scale_params: 621.030029297 + scale_params: 621.030029297 + scale_params: 621.030029297 + scale_params: 621.030029297 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 568.700012207 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 548.219970703 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 495.529998779 + scale_params: 361.510009766 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + scale_params: 310.769989014 + } +} +layer { + name: "mixed_8_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_2_conv2d" + top: "mixed_8_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_2_conv2d_bn" + top: "mixed_8_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_2_conv2d_relu" + top: "mixed_8_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 193.179992676 + scale_out: 135.479995728 + scale_params: 1102.20996094 + scale_params: 608.619995117 + scale_params: 608.619995117 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 600.179992676 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 479.070007324 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + scale_params: 313.369995117 + } +} +layer { + name: "mixed_8_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_3_conv2d" + top: "mixed_8_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_3_conv2d_bn" + top: "mixed_8_tower_1_conv_3_conv2d_relu" +} +layer { + name: "MAX_pool_mixed_8_pool" + type: "Pooling" + bottom: "ch_concat_mixed_7_chconcat" + top: "MAX_pool_mixed_8_pool" + pooling_param { + pool: MAX + pad: 0 + kernel_size: 3 + stride: 2 + } +} +layer { + name: "ch_concat_mixed_8_chconcat" + type: "Concat" + bottom: "mixed_8_tower_conv_1_conv2d_relu" + bottom: "mixed_8_tower_1_conv_3_conv2d_relu" + bottom: "MAX_pool_mixed_8_pool" + top: "ch_concat_mixed_8_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_9_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + kernel_h: 1 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 81.1500015259 + scale_out: 313.279998779 + scale_params: 948.799987793 + scale_params: 948.799987793 + scale_params: 845.159973145 + scale_params: 735.510009766 + scale_params: 735.510009766 + scale_params: 735.510009766 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 703.640014648 + scale_params: 669.510009766 + scale_params: 669.510009766 + scale_params: 669.510009766 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 627.390014648 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 581.059997559 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 516.359985352 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 450.809997559 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + scale_params: 400.739990234 + } +} +layer { + name: "mixed_9_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_conv_conv2d" + top: "mixed_9_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_conv_relu" + type: "ReLU" + bottom: "mixed_9_conv_conv2d_bn" + top: "mixed_9_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 81.1500015259 + scale_out: 175.759994507 + scale_params: 558.359985352 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 448.510009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 399.260009766 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 386.470001221 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 313.959991455 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + scale_params: 289.25 + } +} +layer { + name: "mixed_9_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_conv_conv2d" + top: "mixed_9_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_conv_conv2d_bn" + top: "mixed_9_tower_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_conv_conv2d_relu" + top: "mixed_9_tower_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 175.759994507 + scale_out: 207.509994507 + scale_params: 759.820007324 + scale_params: 560.900024414 + scale_params: 560.900024414 + scale_params: 536.16998291 + scale_params: 507.869995117 + scale_params: 504.25 + scale_params: 504.25 + scale_params: 504.25 + scale_params: 504.25 + scale_params: 504.25 + scale_params: 464.010009766 + scale_params: 464.010009766 + scale_params: 464.010009766 + scale_params: 464.010009766 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + scale_params: 346.429992676 + } +} +layer { + name: "mixed_9_tower_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_mixed_conv_conv2d" + top: "mixed_9_tower_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_mixed_conv_conv2d_bn" + top: "mixed_9_tower_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_conv_conv2d_relu" + top: "mixed_9_tower_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 175.759994507 + scale_out: 187.419998169 + scale_params: 511.130004883 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 367.75 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 360.059997559 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 317.700012207 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 306.959991455 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + scale_params: 263.369995117 + } +} +layer { + name: "mixed_9_tower_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_mixed_conv_1_conv2d" + top: "mixed_9_tower_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_mixed_conv_1_conv2d_bn" + top: "mixed_9_tower_mixed_conv_1_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 448 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 81.1500015259 + scale_out: 140.960006714 + scale_params: 845.719970703 + scale_params: 777.25 + scale_params: 725.590026855 + scale_params: 613.75 + scale_params: 613.75 + scale_params: 602.700012207 + scale_params: 552.239990234 + scale_params: 552.239990234 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 541.200012207 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 303.570007324 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + scale_params: 241.759994507 + } +} +layer { + name: "mixed_9_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_conv_conv2d" + top: "mixed_9_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_conv_conv2d_bn" + top: "mixed_9_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_conv2d_relu" + top: "mixed_9_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 140.960006714 + scale_out: 127.019996643 + scale_params: 904.130004883 + scale_params: 904.130004883 + scale_params: 869.260009766 + scale_params: 869.260009766 + scale_params: 869.260009766 + scale_params: 869.260009766 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 663.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 586.530029297 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 543.320007324 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + scale_params: 514.510009766 + } +} +layer { + name: "mixed_9_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_conv_1_conv2d" + top: "mixed_9_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_conv_1_conv2d_bn" + top: "mixed_9_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_1_conv2d_relu" + top: "mixed_9_tower_1_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 127.019996643 + scale_out: 198.600006104 + scale_params: 1008.34997559 + scale_params: 1008.34997559 + scale_params: 1008.34997559 + scale_params: 1008.34997559 + scale_params: 1008.34997559 + scale_params: 886.859985352 + scale_params: 886.859985352 + scale_params: 886.859985352 + scale_params: 886.859985352 + scale_params: 886.859985352 + scale_params: 808.539978027 + scale_params: 696.08001709 + scale_params: 696.08001709 + scale_params: 696.08001709 + scale_params: 696.08001709 + scale_params: 696.08001709 + scale_params: 696.08001709 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 618.25 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + scale_params: 570.369995117 + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_mixed_conv_conv2d" + top: "mixed_9_tower_1_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_mixed_conv_conv2d_bn" + top: "mixed_9_tower_1_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_1_conv2d_relu" + top: "mixed_9_tower_1_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 127.019996643 + scale_out: 199.339996338 + scale_params: 757.140014648 + scale_params: 757.140014648 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 558.609985352 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 461.480010986 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 453.25 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 379.730010986 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + scale_params: 365.929992676 + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d" + top: "mixed_9_tower_1_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d_bn" + top: "mixed_9_tower_1_mixed_conv_1_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_9_pool" + type: "Pooling" + bottom: "ch_concat_mixed_8_chconcat" + top: "AVE_pool_mixed_9_pool" + pooling_param { + pool: AVE + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_9_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_9_pool" + top: "mixed_9_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 152.100006104 + scale_out: 308.799987793 + scale_params: 360.630004883 + scale_params: 360.630004883 + scale_params: 360.630004883 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 314.769989014 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 216.449996948 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + scale_params: 119.88999939 + } +} +layer { + name: "mixed_9_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_2_conv_conv2d" + top: "mixed_9_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_2_conv_conv2d_bn" + top: "mixed_9_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_9_chconcat" + type: "Concat" + bottom: "mixed_9_conv_conv2d_relu" + bottom: "mixed_9_tower_mixed_conv_conv2d_relu" + bottom: "mixed_9_tower_mixed_conv_1_conv2d_relu" + bottom: "mixed_9_tower_1_mixed_conv_conv2d_relu" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d_relu" + bottom: "mixed_9_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_9_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_10_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + kernel_h: 1 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 187.419998169 + scale_out: 33.7900009155 + scale_params: 67.8899993896 + scale_params: 67.8899993896 + scale_params: 67.8899993896 + scale_params: 61.2200012207 + scale_params: 61.2200012207 + scale_params: 59.1800003052 + scale_params: 59.1800003052 + scale_params: 59.1800003052 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.7800006866 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 20.1800003052 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.9400005341 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + scale_params: 19.4200000763 + } +} +layer { + name: "mixed_10_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_conv_conv2d" + top: "mixed_10_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_conv_relu" + type: "ReLU" + bottom: "mixed_10_conv_conv2d_bn" + top: "mixed_10_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 187.419998169 + scale_out: 122.779998779 + scale_params: 261.75 + scale_params: 261.75 + scale_params: 261.75 + scale_params: 146.160003662 + scale_params: 146.160003662 + scale_params: 146.160003662 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 144.929992676 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + scale_params: 105.769996643 + } +} +layer { + name: "mixed_10_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_conv_conv2d" + top: "mixed_10_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_conv_conv2d_bn" + top: "mixed_10_tower_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_conv_conv2d_relu" + top: "mixed_10_tower_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 122.779998779 + scale_out: 18.8600006104 + scale_params: 66.3799972534 + scale_params: 62.5600013733 + scale_params: 55.0699996948 + scale_params: 53.8699989319 + scale_params: 47.8600006104 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.9599990845 + scale_params: 46.1199989319 + scale_params: 46.1199989319 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.9700012207 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 37.3899993896 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + scale_params: 35.6800003052 + } +} +layer { + name: "mixed_10_tower_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_mixed_conv_conv2d" + top: "mixed_10_tower_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_mixed_conv_conv2d_bn" + top: "mixed_10_tower_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_conv_conv2d_relu" + top: "mixed_10_tower_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 122.779998779 + scale_out: 18.5200004578 + scale_params: 45.25 + scale_params: 45.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 44.25 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.3400001526 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 41.0200004578 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.1899986267 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 39.0800018311 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + scale_params: 37.3199996948 + } +} +layer { + name: "mixed_10_tower_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_mixed_conv_1_conv2d" + top: "mixed_10_tower_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_mixed_conv_1_conv2d_bn" + top: "mixed_10_tower_mixed_conv_1_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 448 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 187.419998169 + scale_out: 120.839996338 + scale_params: 245.399993896 + scale_params: 245.399993896 + scale_params: 222.289993286 + scale_params: 222.289993286 + scale_params: 222.289993286 + scale_params: 222.289993286 + scale_params: 222.289993286 + scale_params: 222.289993286 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 218.410003662 + scale_params: 186.229995728 + scale_params: 186.229995728 + scale_params: 177.449996948 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 117.129997253 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 113.870002747 + scale_params: 92.4100036621 + } +} +layer { + name: "mixed_10_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_conv_conv2d" + top: "mixed_10_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_conv_conv2d_bn" + top: "mixed_10_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_conv2d_relu" + top: "mixed_10_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 120.839996338 + scale_out: 190.479995728 + scale_params: 648.159973145 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 533.229980469 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 407.940002441 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 395.730010986 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 379.190002441 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 353.399993896 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + scale_params: 345.420013428 + } +} +layer { + name: "mixed_10_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_conv_1_conv2d" + top: "mixed_10_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_conv_1_conv2d_bn" + top: "mixed_10_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_1_conv2d_relu" + top: "mixed_10_tower_1_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 190.479995728 + scale_out: 16.7700004578 + scale_params: 79.3099975586 + scale_params: 68.0999984741 + scale_params: 68.0999984741 + scale_params: 68.0999984741 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 59.6599998474 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 49.0099983215 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + scale_params: 44.3199996948 + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_mixed_conv_conv2d" + top: "mixed_10_tower_1_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_mixed_conv_conv2d_bn" + top: "mixed_10_tower_1_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_1_conv2d_relu" + top: "mixed_10_tower_1_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 190.479995728 + scale_out: 22.0100002289 + scale_params: 66.3600006104 + scale_params: 66.3600006104 + scale_params: 66.3600006104 + scale_params: 66.3600006104 + scale_params: 66.3600006104 + scale_params: 66.3600006104 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 53.6300010681 + scale_params: 49.8100013733 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.6500015259 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 47.0400009155 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + scale_params: 44.2700004578 + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d" + top: "mixed_10_tower_1_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d_bn" + top: "mixed_10_tower_1_mixed_conv_1_conv2d_relu" +} +layer { + name: "MAX_pool_mixed_10_pool" + type: "Pooling" + bottom: "ch_concat_mixed_9_chconcat" + top: "MAX_pool_mixed_10_pool" + pooling_param { + pool: MAX + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "mixed_10_tower_2_conv_conv2d" + type: "Convolution" + bottom: "MAX_pool_mixed_10_pool" + top: "mixed_10_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.00999999977648 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 187.419998169 + scale_out: 40.1100006104 + scale_params: 121.199996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 99.5699996948 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 88.2699966431 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 85.3700027466 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 82.7200012207 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + scale_params: 81.5699996948 + } +} +layer { + name: "mixed_10_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_2_conv_conv2d" + top: "mixed_10_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_2_conv_conv2d_bn" + top: "mixed_10_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_10_chconcat" + type: "Concat" + bottom: "mixed_10_conv_conv2d_relu" + bottom: "mixed_10_tower_mixed_conv_conv2d_relu" + bottom: "mixed_10_tower_mixed_conv_1_conv2d_relu" + bottom: "mixed_10_tower_1_mixed_conv_conv2d_relu" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d_relu" + bottom: "mixed_10_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_10_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "global_pool" + type: "Pooling" + bottom: "ch_concat_mixed_10_chconcat" + top: "global_pool" + pooling_param { + pool: AVE + pad: 0 + kernel_size: 8 + stride: 1 + } +} +layer { + name: "drop" + type: "Dropout" + bottom: "global_pool" + top: "global_pool" + dropout_param { + dropout_ratio: 0.800000011921 + } +} +layer { + name: "flatten" + type: "Flatten" + bottom: "global_pool" + top: "flatten" +} +layer { + name: "fc1" + type: "InnerProduct" + bottom: "flatten" + top: "fc1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 1000 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } +} diff --git a/models/intel_optimized_models/int8/resnet50_int8_mc.prototxt b/models/intel_optimized_models/int8/resnet50_int8_mc.prototxt new file mode 100644 index 000000000..3aab1c6b9 --- /dev/null +++ b/models/intel_optimized_models/int8/resnet50_int8_mc.prototxt @@ -0,0 +1,29478 @@ +# For INT8 reference +name: "ResNet-50" +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { + data_filler { + type: "constant" + value: 0.01 + } + shape { + dim: 64 + dim: 3 + dim: 224 + dim: 224 + } + } +} +layer { + name: "data" + type: "DummyData" + top: "label" + dummy_data_param { + data_filler { + type: "constant" + } + shape { + dim: 64 + } + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + convolution_param { + num_output: 64 + pad: 3 + kernel_size: 7 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } +} +layer { + name: "bn_conv1" + type: "BatchNorm" + bottom: "conv1" + top: "conv1" + batch_norm_param { + } +} +layer { + name: "scale_conv1" + type: "Scale" + bottom: "conv1" + top: "conv1" + scale_param { + bias_term: true + } +} +layer { + name: "conv1_relu" + type: "ReLU" + bottom: "conv1" + top: "conv1" + relu_param { + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "res2a_branch1" + type: "Convolution" + bottom: "pool1" + top: "res2a_branch1" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.38000011444 + scale_out: 6.34000015259 + scale_params: 3828.66992188 + scale_params: 618.320007324 + scale_params: 587.33001709 + scale_params: 587.33001709 + scale_params: 587.33001709 + scale_params: 587.33001709 + scale_params: 587.33001709 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 199.800003052 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 146.75 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 117.430000305 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 95.9499969482 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + scale_params: 75.9199981689 + } +} +layer { + name: "bn2a_branch1" + type: "BatchNorm" + bottom: "res2a_branch1" + top: "res2a_branch1" + batch_norm_param { + } +} +layer { + name: "scale2a_branch1" + type: "Scale" + bottom: "res2a_branch1" + top: "res2a_branch1" + scale_param { + bias_term: true + } +} +layer { + name: "res2a_branch2a" + type: "Convolution" + bottom: "pool1" + top: "res2a_branch2a" + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.38000011444 + scale_out: 17.6599998474 + scale_params: 695.08001709 + scale_params: 411.190002441 + scale_params: 411.190002441 + scale_params: 411.190002441 + scale_params: 411.190002441 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 373.230010986 + scale_params: 321.359985352 + scale_params: 321.359985352 + scale_params: 321.359985352 + scale_params: 321.359985352 + scale_params: 321.359985352 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 299.029998779 + scale_params: 218.039993286 + scale_params: 218.039993286 + scale_params: 218.039993286 + scale_params: 218.039993286 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 210.929992676 + scale_params: 166.910003662 + scale_params: 166.910003662 + scale_params: 166.910003662 + scale_params: 166.910003662 + scale_params: 166.910003662 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 157.399993896 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + scale_params: 151.089996338 + } +} +layer { + name: "bn2a_branch2a" + type: "BatchNorm" + bottom: "res2a_branch2a" + top: "res2a_branch2a" + batch_norm_param { + } +} +layer { + name: "scale2a_branch2a" + type: "Scale" + bottom: "res2a_branch2a" + top: "res2a_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res2a_branch2a_relu" + type: "ReLU" + bottom: "res2a_branch2a" + top: "res2a_branch2a" + relu_param { + } +} +layer { + name: "res2a_branch2b" + type: "Convolution" + bottom: "res2a_branch2a" + top: "res2a_branch2b" + convolution_param { + num_output: 64 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 17.6599998474 + scale_out: 19.9799995422 + scale_params: 1121.42004395 + scale_params: 708.400024414 + scale_params: 708.400024414 + scale_params: 708.400024414 + scale_params: 708.400024414 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 550.099975586 + scale_params: 510.649993896 + scale_params: 510.649993896 + scale_params: 510.649993896 + scale_params: 510.649993896 + scale_params: 510.649993896 + scale_params: 510.649993896 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 424.730010986 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + scale_params: 416.320007324 + } +} +layer { + name: "bn2a_branch2b" + type: "BatchNorm" + bottom: "res2a_branch2b" + top: "res2a_branch2b" + batch_norm_param { + } +} +layer { + name: "scale2a_branch2b" + type: "Scale" + bottom: "res2a_branch2b" + top: "res2a_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res2a_branch2b_relu" + type: "ReLU" + bottom: "res2a_branch2b" + top: "res2a_branch2b" + relu_param { + } +} +layer { + name: "res2a_branch2c" + type: "Convolution" + bottom: "res2a_branch2b" + top: "res2a_branch2c" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 19.9799995422 + scale_out: 12.720000267 + scale_params: 621.090026855 + scale_params: 612.049987793 + scale_params: 291.470001221 + scale_params: 291.470001221 + scale_params: 291.470001221 + scale_params: 291.470001221 + scale_params: 291.470001221 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 248.809997559 + scale_params: 217.529998779 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 196.589996338 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 197.410003662 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 136.529998779 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 131.740005493 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 130.419998169 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 123.959999084 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + scale_params: 72.1699981689 + } +} +layer { + name: "bn2a_branch2c" + type: "BatchNorm" + bottom: "res2a_branch2c" + top: "res2a_branch2c" + batch_norm_param { + } +} +layer { + name: "scale2a_branch2c" + type: "Scale" + bottom: "res2a_branch2c" + top: "res2a_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res2a" + type: "Eltwise" + bottom: "res2a_branch1" + bottom: "res2a_branch2c" + top: "res2a" + eltwise_param { + } +} +layer { + name: "res2a_relu" + type: "ReLU" + bottom: "res2a" + top: "res2a" + relu_param { + } +} +layer { + name: "res2b_branch2a" + type: "Convolution" + bottom: "res2a" + top: "res2b_branch2a" + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 12.720000267 + scale_out: 17.9099998474 + scale_params: 964.260009766 + scale_params: 964.260009766 + scale_params: 964.260009766 + scale_params: 927.700012207 + scale_params: 502.549987793 + scale_params: 429.399993896 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + scale_params: 192.330001831 + } +} +layer { + name: "bn2b_branch2a" + type: "BatchNorm" + bottom: "res2b_branch2a" + top: "res2b_branch2a" + batch_norm_param { + } +} +layer { + name: "scale2b_branch2a" + type: "Scale" + bottom: "res2b_branch2a" + top: "res2b_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res2b_branch2a_relu" + type: "ReLU" + bottom: "res2b_branch2a" + top: "res2b_branch2a" + relu_param { + } +} +layer { + name: "res2b_branch2b" + type: "Convolution" + bottom: "res2b_branch2a" + top: "res2b_branch2b" + convolution_param { + num_output: 64 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 17.9099998474 + scale_out: 19.5799999237 + scale_params: 879.380004883 + scale_params: 813.859985352 + scale_params: 786.770019531 + scale_params: 778.869995117 + scale_params: 574.140014648 + scale_params: 574.140014648 + scale_params: 574.140014648 + scale_params: 574.140014648 + scale_params: 574.140014648 + scale_params: 574.140014648 + scale_params: 531.450012207 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + scale_params: 210.529998779 + } +} +layer { + name: "bn2b_branch2b" + type: "BatchNorm" + bottom: "res2b_branch2b" + top: "res2b_branch2b" + batch_norm_param { + } +} +layer { + name: "scale2b_branch2b" + type: "Scale" + bottom: "res2b_branch2b" + top: "res2b_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res2b_branch2b_relu" + type: "ReLU" + bottom: "res2b_branch2b" + top: "res2b_branch2b" + relu_param { + } +} +layer { + name: "res2b_branch2c" + type: "Convolution" + bottom: "res2b_branch2b" + top: "res2b_branch2c" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 19.5799999237 + scale_out: 12.720000267 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 123.25 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.879997253 + scale_params: 113.279998779 + scale_params: 113.279998779 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + scale_params: 88.4599990845 + } +} +layer { + name: "bn2b_branch2c" + type: "BatchNorm" + bottom: "res2b_branch2c" + top: "res2b_branch2c" + batch_norm_param { + } +} +layer { + name: "scale2b_branch2c" + type: "Scale" + bottom: "res2b_branch2c" + top: "res2b_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res2b" + type: "Eltwise" + bottom: "res2a" + bottom: "res2b_branch2c" + top: "res2b" + eltwise_param { + } +} +layer { + name: "res2b_relu" + type: "ReLU" + bottom: "res2b" + top: "res2b" + relu_param { + } +} +layer { + name: "res2c_branch2a" + type: "Convolution" + bottom: "res2b" + top: "res2c_branch2a" + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 12.720000267 + scale_out: 18.6000003815 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 438.100006104 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + scale_params: 360.359985352 + } +} +layer { + name: "bn2c_branch2a" + type: "BatchNorm" + bottom: "res2c_branch2a" + top: "res2c_branch2a" + batch_norm_param { + } +} +layer { + name: "scale2c_branch2a" + type: "Scale" + bottom: "res2c_branch2a" + top: "res2c_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res2c_branch2a_relu" + type: "ReLU" + bottom: "res2c_branch2a" + top: "res2c_branch2a" + relu_param { + } +} +layer { + name: "res2c_branch2b" + type: "Convolution" + bottom: "res2c_branch2a" + top: "res2c_branch2b" + convolution_param { + num_output: 64 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.6000003815 + scale_out: 18.4200000763 + scale_params: 454.140014648 + scale_params: 454.140014648 + scale_params: 414.5 + scale_params: 414.5 + scale_params: 414.5 + scale_params: 414.5 + scale_params: 414.5 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 397.049987793 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 311.119995117 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + scale_params: 308.029998779 + } +} +layer { + name: "bn2c_branch2b" + type: "BatchNorm" + bottom: "res2c_branch2b" + top: "res2c_branch2b" + batch_norm_param { + } +} +layer { + name: "scale2c_branch2b" + type: "Scale" + bottom: "res2c_branch2b" + top: "res2c_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res2c_branch2b_relu" + type: "ReLU" + bottom: "res2c_branch2b" + top: "res2c_branch2b" + relu_param { + } +} +layer { + name: "res2c_branch2c" + type: "Convolution" + bottom: "res2c_branch2b" + top: "res2c_branch2c" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.4200000763 + scale_out: 11.5200004578 + scale_params: 223.86000061 + scale_params: 185.729995728 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 193.419998169 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 150.119995117 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + scale_params: 103.910003662 + } +} +layer { + name: "bn2c_branch2c" + type: "BatchNorm" + bottom: "res2c_branch2c" + top: "res2c_branch2c" + batch_norm_param { + } +} +layer { + name: "scale2c_branch2c" + type: "Scale" + bottom: "res2c_branch2c" + top: "res2c_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res2c" + type: "Eltwise" + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + eltwise_param { + } +} +layer { + name: "res2c_relu" + type: "ReLU" + bottom: "res2c" + top: "res2c" + relu_param { + } +} +layer { + name: "res3a_branch1" + type: "Convolution" + bottom: "res2c" + top: "res3a_branch1" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 11.5200004578 + scale_out: 4.65000009537 + scale_params: 549.440002441 + scale_params: 549.440002441 + scale_params: 549.440002441 + scale_params: 549.440002441 + scale_params: 549.440002441 + scale_params: 493.700012207 + scale_params: 493.700012207 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 377.260009766 + scale_params: 285.309997559 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 284.179992676 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 222.520004272 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 206.880004883 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 187.279998779 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + scale_params: 135.169998169 + } +} +layer { + name: "bn3a_branch1" + type: "BatchNorm" + bottom: "res3a_branch1" + top: "res3a_branch1" + batch_norm_param { + } +} +layer { + name: "scale3a_branch1" + type: "Scale" + bottom: "res3a_branch1" + top: "res3a_branch1" + scale_param { + bias_term: true + } +} +layer { + name: "res3a_branch2a" + type: "Convolution" + bottom: "res2c" + top: "res3a_branch2a" + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 11.5200004578 + scale_out: 19.0499992371 + scale_params: 1361.23999023 + scale_params: 618.400024414 + scale_params: 618.400024414 + scale_params: 601.489990234 + scale_params: 601.489990234 + scale_params: 570.849975586 + scale_params: 570.849975586 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 503.049987793 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 456.079986572 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 443.190002441 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 386.019989014 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + scale_params: 277.709991455 + } +} +layer { + name: "bn3a_branch2a" + type: "BatchNorm" + bottom: "res3a_branch2a" + top: "res3a_branch2a" + batch_norm_param { + } +} +layer { + name: "scale3a_branch2a" + type: "Scale" + bottom: "res3a_branch2a" + top: "res3a_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res3a_branch2a_relu" + type: "ReLU" + bottom: "res3a_branch2a" + top: "res3a_branch2a" + relu_param { + } +} +layer { + name: "res3a_branch2b" + type: "Convolution" + bottom: "res3a_branch2a" + top: "res3a_branch2b" + convolution_param { + num_output: 128 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 19.0499992371 + scale_out: 25.5400009155 + scale_params: 939.0 + scale_params: 815.140014648 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 573.609985352 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 527.270019531 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + scale_params: 320.339996338 + } +} +layer { + name: "bn3a_branch2b" + type: "BatchNorm" + bottom: "res3a_branch2b" + top: "res3a_branch2b" + batch_norm_param { + } +} +layer { + name: "scale3a_branch2b" + type: "Scale" + bottom: "res3a_branch2b" + top: "res3a_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res3a_branch2b_relu" + type: "ReLU" + bottom: "res3a_branch2b" + top: "res3a_branch2b" + relu_param { + } +} +layer { + name: "res3a_branch2c" + type: "Convolution" + bottom: "res3a_branch2b" + top: "res3a_branch2c" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 25.5400009155 + scale_out: 9.32999992371 + scale_params: 494.809997559 + scale_params: 494.809997559 + scale_params: 328.029998779 + scale_params: 328.029998779 + scale_params: 271.059997559 + scale_params: 271.059997559 + scale_params: 263.899993896 + scale_params: 263.899993896 + scale_params: 194.809997559 + scale_params: 194.809997559 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 164.160003662 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 121.010002136 + scale_params: 102.589996338 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 80.0199966431 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 72.5699996948 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + scale_params: 65.7200012207 + } +} +layer { + name: "bn3a_branch2c" + type: "BatchNorm" + bottom: "res3a_branch2c" + top: "res3a_branch2c" + batch_norm_param { + } +} +layer { + name: "scale3a_branch2c" + type: "Scale" + bottom: "res3a_branch2c" + top: "res3a_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res3a" + type: "Eltwise" + bottom: "res3a_branch1" + bottom: "res3a_branch2c" + top: "res3a" + eltwise_param { + } +} +layer { + name: "res3a_relu" + type: "ReLU" + bottom: "res3a" + top: "res3a" + relu_param { + } +} +layer { + name: "res3b_branch2a" + type: "Convolution" + bottom: "res3a" + top: "res3b_branch2a" + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.32999992371 + scale_out: 24.1900005341 + scale_params: 1039.75 + scale_params: 1039.75 + scale_params: 1039.75 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 1004.32000732 + scale_params: 989.479980469 + scale_params: 989.479980469 + scale_params: 939.070007324 + scale_params: 939.070007324 + scale_params: 939.070007324 + scale_params: 939.070007324 + scale_params: 939.070007324 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 797.219970703 + scale_params: 636.650024414 + scale_params: 636.650024414 + scale_params: 636.650024414 + scale_params: 636.650024414 + scale_params: 636.650024414 + scale_params: 636.650024414 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 584.140014648 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 513.979980469 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + scale_params: 493.920013428 + } +} +layer { + name: "bn3b_branch2a" + type: "BatchNorm" + bottom: "res3b_branch2a" + top: "res3b_branch2a" + batch_norm_param { + } +} +layer { + name: "scale3b_branch2a" + type: "Scale" + bottom: "res3b_branch2a" + top: "res3b_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res3b_branch2a_relu" + type: "ReLU" + bottom: "res3b_branch2a" + top: "res3b_branch2a" + relu_param { + } +} +layer { + name: "res3b_branch2b" + type: "Convolution" + bottom: "res3b_branch2a" + top: "res3b_branch2b" + convolution_param { + num_output: 128 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 24.1900005341 + scale_out: 20.4899997711 + scale_params: 960.559997559 + scale_params: 592.619995117 + scale_params: 592.619995117 + scale_params: 592.619995117 + scale_params: 592.619995117 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 443.440002441 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 369.869995117 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + scale_params: 308.959991455 + } +} +layer { + name: "bn3b_branch2b" + type: "BatchNorm" + bottom: "res3b_branch2b" + top: "res3b_branch2b" + batch_norm_param { + } +} +layer { + name: "scale3b_branch2b" + type: "Scale" + bottom: "res3b_branch2b" + top: "res3b_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res3b_branch2b_relu" + type: "ReLU" + bottom: "res3b_branch2b" + top: "res3b_branch2b" + relu_param { + } +} +layer { + name: "res3b_branch2c" + type: "Convolution" + bottom: "res3b_branch2b" + top: "res3b_branch2c" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 20.4899997711 + scale_out: 9.32999992371 + scale_params: 361.119995117 + scale_params: 361.119995117 + scale_params: 234.86000061 + scale_params: 166.63999939 + scale_params: 166.63999939 + scale_params: 166.63999939 + scale_params: 166.63999939 + scale_params: 138.399993896 + scale_params: 138.399993896 + scale_params: 138.399993896 + scale_params: 138.399993896 + scale_params: 138.399993896 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 119.5 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 91.2900009155 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.5299987793 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 90.0100021362 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + scale_params: 55.6899986267 + } +} +layer { + name: "bn3b_branch2c" + type: "BatchNorm" + bottom: "res3b_branch2c" + top: "res3b_branch2c" + batch_norm_param { + } +} +layer { + name: "scale3b_branch2c" + type: "Scale" + bottom: "res3b_branch2c" + top: "res3b_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res3b" + type: "Eltwise" + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + eltwise_param { + } +} +layer { + name: "res3b_relu" + type: "ReLU" + bottom: "res3b" + top: "res3b" + relu_param { + } +} +layer { + name: "res3c_branch2a" + type: "Convolution" + bottom: "res3b" + top: "res3c_branch2a" + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.32999992371 + scale_out: 9.35999965668 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1306.75 + scale_params: 1088.5300293 + scale_params: 1088.5300293 + scale_params: 1088.5300293 + scale_params: 1088.5300293 + scale_params: 1030.26000977 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 575.400024414 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + scale_params: 142.929992676 + } +} +layer { + name: "bn3c_branch2a" + type: "BatchNorm" + bottom: "res3c_branch2a" + top: "res3c_branch2a" + batch_norm_param { + } +} +layer { + name: "scale3c_branch2a" + type: "Scale" + bottom: "res3c_branch2a" + top: "res3c_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res3c_branch2a_relu" + type: "ReLU" + bottom: "res3c_branch2a" + top: "res3c_branch2a" + relu_param { + } +} +layer { + name: "res3c_branch2b" + type: "Convolution" + bottom: "res3c_branch2a" + top: "res3c_branch2b" + convolution_param { + num_output: 128 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.35999965668 + scale_out: 3.74000000954 + scale_params: 647.440002441 + scale_params: 647.440002441 + scale_params: 379.760009766 + scale_params: 379.760009766 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 206.699996948 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 141.330001831 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + scale_params: 88.1699981689 + } +} +layer { + name: "bn3c_branch2b" + type: "BatchNorm" + bottom: "res3c_branch2b" + top: "res3c_branch2b" + batch_norm_param { + } +} +layer { + name: "scale3c_branch2b" + type: "Scale" + bottom: "res3c_branch2b" + top: "res3c_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res3c_branch2b_relu" + type: "ReLU" + bottom: "res3c_branch2b" + top: "res3c_branch2b" + relu_param { + } +} +layer { + name: "res3c_branch2c" + type: "Convolution" + bottom: "res3c_branch2b" + top: "res3c_branch2c" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 3.74000000954 + scale_out: 9.32999992371 + scale_params: 906.039978027 + scale_params: 494.829986572 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 286.070007324 + scale_params: 277.070007324 + scale_params: 277.070007324 + scale_params: 277.070007324 + scale_params: 277.070007324 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 200.13999939 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 148.119995117 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 118.11000061 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 79.8199996948 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 70.7099990845 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 67.3099975586 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + scale_params: 66.2300033569 + } +} +layer { + name: "bn3c_branch2c" + type: "BatchNorm" + bottom: "res3c_branch2c" + top: "res3c_branch2c" + batch_norm_param { + } +} +layer { + name: "scale3c_branch2c" + type: "Scale" + bottom: "res3c_branch2c" + top: "res3c_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res3c" + type: "Eltwise" + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + eltwise_param { + } +} +layer { + name: "res3c_relu" + type: "ReLU" + bottom: "res3c" + top: "res3c" + relu_param { + } +} +layer { + name: "res3d_branch2a" + type: "Convolution" + bottom: "res3c" + top: "res3d_branch2a" + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.32999992371 + scale_out: 7.40999984741 + scale_params: 632.570007324 + scale_params: 491.670013428 + scale_params: 491.670013428 + scale_params: 491.670013428 + scale_params: 491.670013428 + scale_params: 325.820007324 + scale_params: 325.820007324 + scale_params: 325.820007324 + scale_params: 325.820007324 + scale_params: 325.820007324 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 287.850006104 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + scale_params: 240.589996338 + } +} +layer { + name: "bn3d_branch2a" + type: "BatchNorm" + bottom: "res3d_branch2a" + top: "res3d_branch2a" + batch_norm_param { + } +} +layer { + name: "scale3d_branch2a" + type: "Scale" + bottom: "res3d_branch2a" + top: "res3d_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res3d_branch2a_relu" + type: "ReLU" + bottom: "res3d_branch2a" + top: "res3d_branch2a" + relu_param { + } +} +layer { + name: "res3d_branch2b" + type: "Convolution" + bottom: "res3d_branch2a" + top: "res3d_branch2b" + convolution_param { + num_output: 128 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 7.40999984741 + scale_out: 15.4200000763 + scale_params: 972.200012207 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 565.359985352 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 385.869995117 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + scale_params: 314.239990234 + } +} +layer { + name: "bn3d_branch2b" + type: "BatchNorm" + bottom: "res3d_branch2b" + top: "res3d_branch2b" + batch_norm_param { + } +} +layer { + name: "scale3d_branch2b" + type: "Scale" + bottom: "res3d_branch2b" + top: "res3d_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res3d_branch2b_relu" + type: "ReLU" + bottom: "res3d_branch2b" + top: "res3d_branch2b" + relu_param { + } +} +layer { + name: "res3d_branch2c" + type: "Convolution" + bottom: "res3d_branch2b" + top: "res3d_branch2c" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 15.4200000763 + scale_out: 9.82999992371 + scale_params: 955.090026855 + scale_params: 353.910003662 + scale_params: 353.910003662 + scale_params: 234.880004883 + scale_params: 234.880004883 + scale_params: 234.880004883 + scale_params: 234.880004883 + scale_params: 234.880004883 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 217.550003052 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 130.669998169 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + scale_params: 113.980003357 + } +} +layer { + name: "bn3d_branch2c" + type: "BatchNorm" + bottom: "res3d_branch2c" + top: "res3d_branch2c" + batch_norm_param { + } +} +layer { + name: "scale3d_branch2c" + type: "Scale" + bottom: "res3d_branch2c" + top: "res3d_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res3d" + type: "Eltwise" + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + eltwise_param { + } +} +layer { + name: "res3d_relu" + type: "ReLU" + bottom: "res3d" + top: "res3d" + relu_param { + } +} +layer { + name: "res4a_branch1" + type: "Convolution" + bottom: "res3d" + top: "res4a_branch1" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.82999992371 + scale_out: 4.28000020981 + scale_params: 956.469970703 + scale_params: 312.910003662 + scale_params: 312.910003662 + scale_params: 312.910003662 + scale_params: 312.910003662 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 291.559997559 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 275.929992676 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 267.540008545 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 235.0 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 222.270004272 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + scale_params: 213.380004883 + } +} +layer { + name: "bn4a_branch1" + type: "BatchNorm" + bottom: "res4a_branch1" + top: "res4a_branch1" + batch_norm_param { + } +} +layer { + name: "scale4a_branch1" + type: "Scale" + bottom: "res4a_branch1" + top: "res4a_branch1" + scale_param { + bias_term: true + } +} +layer { + name: "res4a_branch2a" + type: "Convolution" + bottom: "res3d" + top: "res4a_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 9.82999992371 + scale_out: 12.7700004578 + scale_params: 921.58001709 + scale_params: 894.41998291 + scale_params: 894.41998291 + scale_params: 894.41998291 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 516.0 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + scale_params: 254.339996338 + } +} +layer { + name: "bn4a_branch2a" + type: "BatchNorm" + bottom: "res4a_branch2a" + top: "res4a_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4a_branch2a" + type: "Scale" + bottom: "res4a_branch2a" + top: "res4a_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4a_branch2a_relu" + type: "ReLU" + bottom: "res4a_branch2a" + top: "res4a_branch2a" + relu_param { + } +} +layer { + name: "res4a_branch2b" + type: "Convolution" + bottom: "res4a_branch2a" + top: "res4a_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 12.7700004578 + scale_out: 15.3699998856 + scale_params: 2216.91992188 + scale_params: 2216.91992188 + scale_params: 1342.63000488 + scale_params: 1342.63000488 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 676.979980469 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 598.890014648 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + scale_params: 473.709991455 + } +} +layer { + name: "bn4a_branch2b" + type: "BatchNorm" + bottom: "res4a_branch2b" + top: "res4a_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4a_branch2b" + type: "Scale" + bottom: "res4a_branch2b" + top: "res4a_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4a_branch2b_relu" + type: "ReLU" + bottom: "res4a_branch2b" + top: "res4a_branch2b" + relu_param { + } +} +layer { + name: "res4a_branch2c" + type: "Convolution" + bottom: "res4a_branch2b" + top: "res4a_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 15.3699998856 + scale_out: 8.60000038147 + scale_params: 479.279998779 + scale_params: 367.220001221 + scale_params: 271.839996338 + scale_params: 201.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.820007324 + scale_params: 134.649993896 + scale_params: 134.649993896 + scale_params: 134.649993896 + scale_params: 134.649993896 + scale_params: 134.649993896 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 90.8799972534 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 86.5999984741 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + scale_params: 75.6200027466 + } +} +layer { + name: "bn4a_branch2c" + type: "BatchNorm" + bottom: "res4a_branch2c" + top: "res4a_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4a_branch2c" + type: "Scale" + bottom: "res4a_branch2c" + top: "res4a_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4a" + type: "Eltwise" + bottom: "res4a_branch1" + bottom: "res4a_branch2c" + top: "res4a" + eltwise_param { + } +} +layer { + name: "res4a_relu" + type: "ReLU" + bottom: "res4a" + top: "res4a" + relu_param { + } +} +layer { + name: "res4b_branch2a" + type: "Convolution" + bottom: "res4a" + top: "res4b_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.60000038147 + scale_out: 12.2600002289 + scale_params: 3947.5300293 + scale_params: 1537.23999023 + scale_params: 1347.52001953 + scale_params: 1347.52001953 + scale_params: 1250.95996094 + scale_params: 1250.95996094 + scale_params: 1250.95996094 + scale_params: 1250.95996094 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 534.0 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + scale_params: 325.369995117 + } +} +layer { + name: "bn4b_branch2a" + type: "BatchNorm" + bottom: "res4b_branch2a" + top: "res4b_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4b_branch2a" + type: "Scale" + bottom: "res4b_branch2a" + top: "res4b_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4b_branch2a_relu" + type: "ReLU" + bottom: "res4b_branch2a" + top: "res4b_branch2a" + relu_param { + } +} +layer { + name: "res4b_branch2b" + type: "Convolution" + bottom: "res4b_branch2a" + top: "res4b_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 12.2600002289 + scale_out: 6.44000005722 + scale_params: 592.570007324 + scale_params: 592.570007324 + scale_params: 592.570007324 + scale_params: 592.570007324 + scale_params: 592.570007324 + scale_params: 592.570007324 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 538.770019531 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 460.369995117 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 304.579986572 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + scale_params: 131.820007324 + } +} +layer { + name: "bn4b_branch2b" + type: "BatchNorm" + bottom: "res4b_branch2b" + top: "res4b_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4b_branch2b" + type: "Scale" + bottom: "res4b_branch2b" + top: "res4b_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4b_branch2b_relu" + type: "ReLU" + bottom: "res4b_branch2b" + top: "res4b_branch2b" + relu_param { + } +} +layer { + name: "res4b_branch2c" + type: "Convolution" + bottom: "res4b_branch2b" + top: "res4b_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 6.44000005722 + scale_out: 8.60000038147 + scale_params: 595.33001709 + scale_params: 241.830001831 + scale_params: 241.830001831 + scale_params: 241.830001831 + scale_params: 241.830001831 + scale_params: 241.830001831 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 127.410003662 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 108.730003357 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 102.5 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 83.5800018311 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + scale_params: 67.4400024414 + } +} +layer { + name: "bn4b_branch2c" + type: "BatchNorm" + bottom: "res4b_branch2c" + top: "res4b_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4b_branch2c" + type: "Scale" + bottom: "res4b_branch2c" + top: "res4b_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4b" + type: "Eltwise" + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + eltwise_param { + } +} +layer { + name: "res4b_relu" + type: "ReLU" + bottom: "res4b" + top: "res4b" + relu_param { + } +} +layer { + name: "res4c_branch2a" + type: "Convolution" + bottom: "res4b" + top: "res4c_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.60000038147 + scale_out: 11.529999733 + scale_params: 2886.4699707 + scale_params: 1559.79003906 + scale_params: 1082.61999512 + scale_params: 1082.61999512 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 672.570007324 + scale_params: 624.41998291 + scale_params: 624.41998291 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 624.179992676 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + scale_params: 369.480010986 + } +} +layer { + name: "bn4c_branch2a" + type: "BatchNorm" + bottom: "res4c_branch2a" + top: "res4c_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4c_branch2a" + type: "Scale" + bottom: "res4c_branch2a" + top: "res4c_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4c_branch2a_relu" + type: "ReLU" + bottom: "res4c_branch2a" + top: "res4c_branch2a" + relu_param { + } +} +layer { + name: "res4c_branch2b" + type: "Convolution" + bottom: "res4c_branch2a" + top: "res4c_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 11.529999733 + scale_out: 6.94999980927 + scale_params: 478.399993896 + scale_params: 478.399993896 + scale_params: 478.399993896 + scale_params: 478.399993896 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 419.880004883 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + scale_params: 139.050003052 + } +} +layer { + name: "bn4c_branch2b" + type: "BatchNorm" + bottom: "res4c_branch2b" + top: "res4c_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4c_branch2b" + type: "Scale" + bottom: "res4c_branch2b" + top: "res4c_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4c_branch2b_relu" + type: "ReLU" + bottom: "res4c_branch2b" + top: "res4c_branch2b" + relu_param { + } +} +layer { + name: "res4c_branch2c" + type: "Convolution" + bottom: "res4c_branch2b" + top: "res4c_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 6.94999980927 + scale_out: 8.60000038147 + scale_params: 525.75 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 256.640014648 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 149.160003662 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 104.680000305 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + scale_params: 76.9700012207 + } +} +layer { + name: "bn4c_branch2c" + type: "BatchNorm" + bottom: "res4c_branch2c" + top: "res4c_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4c_branch2c" + type: "Scale" + bottom: "res4c_branch2c" + top: "res4c_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4c" + type: "Eltwise" + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + eltwise_param { + } +} +layer { + name: "res4c_relu" + type: "ReLU" + bottom: "res4c" + top: "res4c" + relu_param { + } +} +layer { + name: "res4d_branch2a" + type: "Convolution" + bottom: "res4c" + top: "res4d_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.60000038147 + scale_out: 10.7299995422 + scale_params: 1452.59997559 + scale_params: 1452.59997559 + scale_params: 1452.59997559 + scale_params: 1397.26000977 + scale_params: 1280.13000488 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 929.66998291 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 526.909973145 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 491.859985352 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 371.940002441 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + scale_params: 312.220001221 + } +} +layer { + name: "bn4d_branch2a" + type: "BatchNorm" + bottom: "res4d_branch2a" + top: "res4d_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4d_branch2a" + type: "Scale" + bottom: "res4d_branch2a" + top: "res4d_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4d_branch2a_relu" + type: "ReLU" + bottom: "res4d_branch2a" + top: "res4d_branch2a" + relu_param { + } +} +layer { + name: "res4d_branch2b" + type: "Convolution" + bottom: "res4d_branch2a" + top: "res4d_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 10.7299995422 + scale_out: 5.40000009537 + scale_params: 663.349975586 + scale_params: 663.349975586 + scale_params: 663.349975586 + scale_params: 663.349975586 + scale_params: 663.349975586 + scale_params: 569.039978027 + scale_params: 569.039978027 + scale_params: 569.039978027 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 453.630004883 + scale_params: 373.649993896 + scale_params: 373.649993896 + scale_params: 373.649993896 + scale_params: 373.649993896 + scale_params: 373.649993896 + scale_params: 373.649993896 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + scale_params: 201.61000061 + } +} +layer { + name: "bn4d_branch2b" + type: "BatchNorm" + bottom: "res4d_branch2b" + top: "res4d_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4d_branch2b" + type: "Scale" + bottom: "res4d_branch2b" + top: "res4d_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4d_branch2b_relu" + type: "ReLU" + bottom: "res4d_branch2b" + top: "res4d_branch2b" + relu_param { + } +} +layer { + name: "res4d_branch2c" + type: "Convolution" + bottom: "res4d_branch2b" + top: "res4d_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 5.40000009537 + scale_out: 8.60000038147 + scale_params: 259.899993896 + scale_params: 259.899993896 + scale_params: 259.899993896 + scale_params: 259.899993896 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.800003052 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 157.070007324 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 134.220001221 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 124.86000061 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 100.959999084 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 91.1200027466 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + scale_params: 77.1500015259 + } +} +layer { + name: "bn4d_branch2c" + type: "BatchNorm" + bottom: "res4d_branch2c" + top: "res4d_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4d_branch2c" + type: "Scale" + bottom: "res4d_branch2c" + top: "res4d_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4d" + type: "Eltwise" + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + eltwise_param { + } +} +layer { + name: "res4d_relu" + type: "ReLU" + bottom: "res4d" + top: "res4d" + relu_param { + } +} +layer { + name: "res4e_branch2a" + type: "Convolution" + bottom: "res4d" + top: "res4e_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.60000038147 + scale_out: 11.7600002289 + scale_params: 858.780029297 + scale_params: 858.780029297 + scale_params: 858.780029297 + scale_params: 858.780029297 + scale_params: 858.780029297 + scale_params: 858.780029297 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 800.16998291 + scale_params: 703.070007324 + scale_params: 703.070007324 + scale_params: 703.070007324 + scale_params: 703.070007324 + scale_params: 703.070007324 + scale_params: 703.070007324 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 573.390014648 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 486.970001221 + scale_params: 484.329986572 + scale_params: 484.329986572 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 355.600006104 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + scale_params: 293.720001221 + } +} +layer { + name: "bn4e_branch2a" + type: "BatchNorm" + bottom: "res4e_branch2a" + top: "res4e_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4e_branch2a" + type: "Scale" + bottom: "res4e_branch2a" + top: "res4e_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4e_branch2a_relu" + type: "ReLU" + bottom: "res4e_branch2a" + top: "res4e_branch2a" + relu_param { + } +} +layer { + name: "res4e_branch2b" + type: "Convolution" + bottom: "res4e_branch2a" + top: "res4e_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 11.7600002289 + scale_out: 6.51999998093 + scale_params: 877.440002441 + scale_params: 860.799987793 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 643.429992676 + scale_params: 298.790008545 + scale_params: 298.790008545 + scale_params: 298.790008545 + scale_params: 298.790008545 + scale_params: 298.790008545 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 218.600006104 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 190.910003662 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + scale_params: 185.36000061 + } +} +layer { + name: "bn4e_branch2b" + type: "BatchNorm" + bottom: "res4e_branch2b" + top: "res4e_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4e_branch2b" + type: "Scale" + bottom: "res4e_branch2b" + top: "res4e_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4e_branch2b_relu" + type: "ReLU" + bottom: "res4e_branch2b" + top: "res4e_branch2b" + relu_param { + } +} +layer { + name: "res4e_branch2c" + type: "Convolution" + bottom: "res4e_branch2b" + top: "res4e_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 6.51999998093 + scale_out: 8.60000038147 + scale_params: 346.179992676 + scale_params: 346.179992676 + scale_params: 346.179992676 + scale_params: 346.179992676 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 268.570007324 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 221.809997559 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 195.919998169 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 138.36000061 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 134.100006104 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 118.459999084 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + scale_params: 98.8199996948 + } +} +layer { + name: "bn4e_branch2c" + type: "BatchNorm" + bottom: "res4e_branch2c" + top: "res4e_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4e_branch2c" + type: "Scale" + bottom: "res4e_branch2c" + top: "res4e_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4e" + type: "Eltwise" + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + eltwise_param { + } +} +layer { + name: "res4e_relu" + type: "ReLU" + bottom: "res4e" + top: "res4e" + relu_param { + } +} +layer { + name: "res4f_branch2a" + type: "Convolution" + bottom: "res4e" + top: "res4f_branch2a" + convolution_param { + num_output: 256 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.60000038147 + scale_out: 16.2900009155 + scale_params: 677.33001709 + scale_params: 677.33001709 + scale_params: 677.33001709 + scale_params: 677.33001709 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 594.030029297 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 445.390014648 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 429.410003662 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + scale_params: 300.049987793 + } +} +layer { + name: "bn4f_branch2a" + type: "BatchNorm" + bottom: "res4f_branch2a" + top: "res4f_branch2a" + batch_norm_param { + } +} +layer { + name: "scale4f_branch2a" + type: "Scale" + bottom: "res4f_branch2a" + top: "res4f_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res4f_branch2a_relu" + type: "ReLU" + bottom: "res4f_branch2a" + top: "res4f_branch2a" + relu_param { + } +} +layer { + name: "res4f_branch2b" + type: "Convolution" + bottom: "res4f_branch2a" + top: "res4f_branch2b" + convolution_param { + num_output: 256 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 16.2900009155 + scale_out: 19.9699993134 + scale_params: 899.159973145 + scale_params: 601.340026855 + scale_params: 594.789978027 + scale_params: 331.299987793 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 249.119995117 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + scale_params: 240.550003052 + } +} +layer { + name: "bn4f_branch2b" + type: "BatchNorm" + bottom: "res4f_branch2b" + top: "res4f_branch2b" + batch_norm_param { + } +} +layer { + name: "scale4f_branch2b" + type: "Scale" + bottom: "res4f_branch2b" + top: "res4f_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res4f_branch2b_relu" + type: "ReLU" + bottom: "res4f_branch2b" + top: "res4f_branch2b" + relu_param { + } +} +layer { + name: "res4f_branch2c" + type: "Convolution" + bottom: "res4f_branch2b" + top: "res4f_branch2c" + convolution_param { + num_output: 1024 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 19.9699993134 + scale_out: 8.5 + scale_params: 691.440002441 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 173.100006104 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 121.739997864 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 117.25 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + scale_params: 93.3000030518 + } +} +layer { + name: "bn4f_branch2c" + type: "BatchNorm" + bottom: "res4f_branch2c" + top: "res4f_branch2c" + batch_norm_param { + } +} +layer { + name: "scale4f_branch2c" + type: "Scale" + bottom: "res4f_branch2c" + top: "res4f_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res4f" + type: "Eltwise" + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + eltwise_param { + } +} +layer { + name: "res4f_relu" + type: "ReLU" + bottom: "res4f" + top: "res4f" + relu_param { + } +} +layer { + name: "res5a_branch1" + type: "Convolution" + bottom: "res4f" + top: "res5a_branch1" + convolution_param { + num_output: 2048 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.5 + scale_out: 0.939999997616 + scale_params: 374.070007324 + scale_params: 374.070007324 + scale_params: 374.070007324 + scale_params: 374.070007324 + scale_params: 374.070007324 + scale_params: 374.070007324 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 165.36000061 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 151.850006104 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 52.6500015259 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + scale_params: 45.0 + } +} +layer { + name: "bn5a_branch1" + type: "BatchNorm" + bottom: "res5a_branch1" + top: "res5a_branch1" + batch_norm_param { + } +} +layer { + name: "scale5a_branch1" + type: "Scale" + bottom: "res5a_branch1" + top: "res5a_branch1" + scale_param { + bias_term: true + } +} +layer { + name: "res5a_branch2a" + type: "Convolution" + bottom: "res4f" + top: "res5a_branch2a" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 8.5 + scale_out: 21.5699996948 + scale_params: 1796.29003906 + scale_params: 1790.7800293 + scale_params: 1017.03997803 + scale_params: 1017.03997803 + scale_params: 1017.03997803 + scale_params: 1017.03997803 + scale_params: 1017.03997803 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 632.099975586 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + scale_params: 375.869995117 + } +} +layer { + name: "bn5a_branch2a" + type: "BatchNorm" + bottom: "res5a_branch2a" + top: "res5a_branch2a" + batch_norm_param { + } +} +layer { + name: "scale5a_branch2a" + type: "Scale" + bottom: "res5a_branch2a" + top: "res5a_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res5a_branch2a_relu" + type: "ReLU" + bottom: "res5a_branch2a" + top: "res5a_branch2a" + relu_param { + } +} +layer { + name: "res5a_branch2b" + type: "Convolution" + bottom: "res5a_branch2a" + top: "res5a_branch2b" + convolution_param { + num_output: 512 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 21.5699996948 + scale_out: 25.2000007629 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 801.809997559 + scale_params: 790.530029297 + scale_params: 790.530029297 + scale_params: 790.530029297 + scale_params: 790.530029297 + scale_params: 790.530029297 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 507.790008545 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 387.179992676 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + scale_params: 228.160003662 + } +} +layer { + name: "bn5a_branch2b" + type: "BatchNorm" + bottom: "res5a_branch2b" + top: "res5a_branch2b" + batch_norm_param { + } +} +layer { + name: "scale5a_branch2b" + type: "Scale" + bottom: "res5a_branch2b" + top: "res5a_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res5a_branch2b_relu" + type: "ReLU" + bottom: "res5a_branch2b" + top: "res5a_branch2b" + relu_param { + } +} +layer { + name: "res5a_branch2c" + type: "Convolution" + bottom: "res5a_branch2b" + top: "res5a_branch2c" + convolution_param { + num_output: 2048 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 25.2000007629 + scale_out: 1.87999999523 + scale_params: 116.319999695 + scale_params: 116.319999695 + scale_params: 116.319999695 + scale_params: 116.319999695 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 92.6800003052 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 47.6699981689 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 37.0400009155 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 30.5599994659 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + scale_params: 27.1299991608 + } +} +layer { + name: "bn5a_branch2c" + type: "BatchNorm" + bottom: "res5a_branch2c" + top: "res5a_branch2c" + batch_norm_param { + } +} +layer { + name: "scale5a_branch2c" + type: "Scale" + bottom: "res5a_branch2c" + top: "res5a_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res5a" + type: "Eltwise" + bottom: "res5a_branch1" + bottom: "res5a_branch2c" + top: "res5a" + eltwise_param { + } +} +layer { + name: "res5a_relu" + type: "ReLU" + bottom: "res5a" + top: "res5a" + relu_param { + } +} +layer { + name: "res5b_branch2a" + type: "Convolution" + bottom: "res5a" + top: "res5b_branch2a" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 1.87999999523 + scale_out: 25.4400005341 + scale_params: 3583.56005859 + scale_params: 3583.56005859 + scale_params: 3573.32006836 + scale_params: 3388.86010742 + scale_params: 3388.86010742 + scale_params: 3110.51000977 + scale_params: 2561.98999023 + scale_params: 2561.98999023 + scale_params: 2561.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1991.98999023 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1314.39001465 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 1268.45996094 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + scale_params: 999.760009766 + } +} +layer { + name: "bn5b_branch2a" + type: "BatchNorm" + bottom: "res5b_branch2a" + top: "res5b_branch2a" + batch_norm_param { + } +} +layer { + name: "scale5b_branch2a" + type: "Scale" + bottom: "res5b_branch2a" + top: "res5b_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res5b_branch2a_relu" + type: "ReLU" + bottom: "res5b_branch2a" + top: "res5b_branch2a" + relu_param { + } +} +layer { + name: "res5b_branch2b" + type: "Convolution" + bottom: "res5b_branch2a" + top: "res5b_branch2b" + convolution_param { + num_output: 512 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 25.4400005341 + scale_out: 29.2800006866 + scale_params: 1340.82995605 + scale_params: 864.640014648 + scale_params: 774.390014648 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 652.08001709 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 567.179992676 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 456.420013428 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + scale_params: 153.630004883 + } +} +layer { + name: "bn5b_branch2b" + type: "BatchNorm" + bottom: "res5b_branch2b" + top: "res5b_branch2b" + batch_norm_param { + } +} +layer { + name: "scale5b_branch2b" + type: "Scale" + bottom: "res5b_branch2b" + top: "res5b_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res5b_branch2b_relu" + type: "ReLU" + bottom: "res5b_branch2b" + top: "res5b_branch2b" + relu_param { + } +} +layer { + name: "res5b_branch2c" + type: "Convolution" + bottom: "res5b_branch2b" + top: "res5b_branch2c" + convolution_param { + num_output: 2048 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 29.2800006866 + scale_out: 1.87999999523 + scale_params: 111.25 + scale_params: 111.25 + scale_params: 111.25 + scale_params: 111.25 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 97.3399963379 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 77.9800033569 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 76.9000015259 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 42.2999992371 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.8100013733 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 39.2599983215 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + scale_params: 35.3400001526 + } +} +layer { + name: "bn5b_branch2c" + type: "BatchNorm" + bottom: "res5b_branch2c" + top: "res5b_branch2c" + batch_norm_param { + } +} +layer { + name: "scale5b_branch2c" + type: "Scale" + bottom: "res5b_branch2c" + top: "res5b_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res5b" + type: "Eltwise" + bottom: "res5a" + bottom: "res5b_branch2c" + top: "res5b" + eltwise_param { + } +} +layer { + name: "res5b_relu" + type: "ReLU" + bottom: "res5b" + top: "res5b" + relu_param { + } +} +layer { + name: "res5c_branch2a" + type: "Convolution" + bottom: "res5b" + top: "res5c_branch2a" + convolution_param { + num_output: 512 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 1.87999999523 + scale_out: 21.8099994659 + scale_params: 3912.12011719 + scale_params: 2294.79003906 + scale_params: 2294.79003906 + scale_params: 2294.79003906 + scale_params: 2294.79003906 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1452.15002441 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1421.31005859 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1123.97998047 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + scale_params: 1013.09997559 + } +} +layer { + name: "bn5c_branch2a" + type: "BatchNorm" + bottom: "res5c_branch2a" + top: "res5c_branch2a" + batch_norm_param { + } +} +layer { + name: "scale5c_branch2a" + type: "Scale" + bottom: "res5c_branch2a" + top: "res5c_branch2a" + scale_param { + bias_term: true + } +} +layer { + name: "res5c_branch2a_relu" + type: "ReLU" + bottom: "res5c_branch2a" + top: "res5c_branch2a" + relu_param { + } +} +layer { + name: "res5c_branch2b" + type: "Convolution" + bottom: "res5c_branch2a" + top: "res5c_branch2b" + convolution_param { + num_output: 512 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 21.8099994659 + scale_out: 14.7100000381 + scale_params: 647.83001709 + scale_params: 647.83001709 + scale_params: 647.83001709 + scale_params: 647.83001709 + scale_params: 647.83001709 + scale_params: 647.83001709 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 638.950012207 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 618.159973145 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 544.890014648 + scale_params: 475.880004883 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 392.570007324 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 356.170013428 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 329.160003662 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + scale_params: 321.25 + } +} +layer { + name: "bn5c_branch2b" + type: "BatchNorm" + bottom: "res5c_branch2b" + top: "res5c_branch2b" + batch_norm_param { + } +} +layer { + name: "scale5c_branch2b" + type: "Scale" + bottom: "res5c_branch2b" + top: "res5c_branch2b" + scale_param { + bias_term: true + } +} +layer { + name: "res5c_branch2b_relu" + type: "ReLU" + bottom: "res5c_branch2b" + top: "res5c_branch2b" + relu_param { + } +} +layer { + name: "res5c_branch2c" + type: "Convolution" + bottom: "res5c_branch2b" + top: "res5c_branch2c" + convolution_param { + num_output: 2048 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.20000000298 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 14.7100000381 + scale_out: 1.87999999523 + scale_params: 183.520004272 + scale_params: 103.839996338 + scale_params: 103.839996338 + scale_params: 103.839996338 + scale_params: 103.839996338 + scale_params: 90.0999984741 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 83.4599990845 + scale_params: 82.2600021362 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 61.0400009155 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 35.8199996948 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 33.4000015259 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 32.9099998474 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 31.8299999237 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + scale_params: 23.2399997711 + } +} +layer { + name: "bn5c_branch2c" + type: "BatchNorm" + bottom: "res5c_branch2c" + top: "res5c_branch2c" + batch_norm_param { + } +} +layer { + name: "scale5c_branch2c" + type: "Scale" + bottom: "res5c_branch2c" + top: "res5c_branch2c" + scale_param { + bias_term: true + } +} +layer { + name: "res5c" + type: "Eltwise" + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + eltwise_param { + } +} +layer { + name: "res5c_relu" + type: "ReLU" + bottom: "res5c" + top: "res5c" + relu_param { + } +} +layer { + name: "pool5" + type: "Pooling" + bottom: "res5c" + top: "pool5" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 1 + } +} +layer { + name: "fc1000" + type: "InnerProduct" + bottom: "pool5" + top: "fc1000" + inner_product_param { + num_output: 1000 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } +} diff --git a/models/intel_optimized_models/int8/ssd_int8_mc.prototxt b/models/intel_optimized_models/int8/ssd_int8_mc.prototxt new file mode 100644 index 000000000..67788a664 --- /dev/null +++ b/models/intel_optimized_models/int8/ssd_int8_mc.prototxt @@ -0,0 +1,10798 @@ +# For INT8 reference +name: "VGG_VOC0712_SSD_300x300_test" +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { + data_filler { + type: "constant" + value: 0.01 + } + shape { + dim: 32 + dim: 3 + dim: 300 + dim: 300 + } + } +} +layer { + name: "data" + type: "DummyData" + top: "label" + dummy_data_param { + data_filler { + type: "constant" + value: 1 + } + shape { + dim: 1 + dim: 1 + dim: 1 + dim: 8 + } + } +} +layer { + name: "conv1_1" + type: "Convolution" + bottom: "data" + top: "conv1_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } +} +layer { + name: "relu1_1" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "conv1_2" + type: "Convolution" + bottom: "conv1_1" + top: "conv1_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.319999992847 + scale_out: 0.0799999982119 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 619.210021973 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 601.900024414 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + scale_params: 454.859985352 + } +} +layer { + name: "relu1_2" + type: "ReLU" + bottom: "conv1_2" + top: "conv1_2" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_2" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv2_1" + type: "Convolution" + bottom: "pool1" + top: "conv2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0799999982119 + scale_out: 0.0599999986589 + scale_params: 2736.81005859 + scale_params: 1452.55004883 + scale_params: 1272.31994629 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 474.480010986 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 467.700012207 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 434.75 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 362.059997559 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + scale_params: 299.019989014 + } +} +layer { + name: "relu2_1" + type: "ReLU" + bottom: "conv2_1" + top: "conv2_1" +} +layer { + name: "conv2_2" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0599999986589 + scale_out: 0.0500000007451 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 845.289978027 + scale_params: 760.809997559 + scale_params: 760.809997559 + scale_params: 760.809997559 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 693.260009766 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 661.590026855 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 615.869995117 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 599.640014648 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + scale_params: 540.909973145 + } +} +layer { + name: "relu2_2" + type: "ReLU" + bottom: "conv2_2" + top: "conv2_2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2_2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv3_1" + type: "Convolution" + bottom: "pool2" + top: "conv3_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0500000007451 + scale_out: 0.0399999991059 + scale_params: 1463.7800293 + scale_params: 1463.7800293 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + scale_params: 256.5 + } +} +layer { + name: "relu3_1" + type: "ReLU" + bottom: "conv3_1" + top: "conv3_1" +} +layer { + name: "conv3_2" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0399999991059 + scale_out: 0.0500000007451 + scale_params: 1617.80004883 + scale_params: 1617.80004883 + scale_params: 1617.80004883 + scale_params: 1617.80004883 + scale_params: 1617.80004883 + scale_params: 1607.51000977 + scale_params: 1370.36999512 + scale_params: 1370.36999512 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 414.170013428 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 343.980010986 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + scale_params: 306.799987793 + } +} +layer { + name: "relu3_2" + type: "ReLU" + bottom: "conv3_2" + top: "conv3_2" +} +layer { + name: "conv3_3" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0500000007451 + scale_out: 0.0599999986589 + scale_params: 1721.54003906 + scale_params: 1721.54003906 + scale_params: 833.239990234 + scale_params: 833.239990234 + scale_params: 833.239990234 + scale_params: 833.239990234 + scale_params: 833.239990234 + scale_params: 833.239990234 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 610.08001709 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 453.320007324 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + scale_params: 352.630004883 + } +} +layer { + name: "relu3_3" + type: "ReLU" + bottom: "conv3_3" + top: "conv3_3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3_3" + top: "pool3" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv4_1" + type: "Convolution" + bottom: "pool3" + top: "conv4_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0599999986589 + scale_out: 0.0799999982119 + scale_params: 3026.43994141 + scale_params: 1364.61999512 + scale_params: 1364.61999512 + scale_params: 1364.61999512 + scale_params: 1364.61999512 + scale_params: 1364.61999512 + scale_params: 1364.61999512 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1137.57995605 + scale_params: 1039.91003418 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 672.400024414 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + scale_params: 478.589996338 + } +} +layer { + name: "relu4_1" + type: "ReLU" + bottom: "conv4_1" + top: "conv4_1" +} +layer { + name: "conv4_2" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.0799999982119 + scale_out: 0.180000007153 + scale_params: 1955.94995117 + scale_params: 1955.94995117 + scale_params: 1955.94995117 + scale_params: 1918.82995605 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + scale_params: 485.910003662 + } +} +layer { + name: "relu4_2" + type: "ReLU" + bottom: "conv4_2" + top: "conv4_2" +} +layer { + name: "conv4_3" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.180000007153 + scale_out: 0.40000000596 + scale_params: 3098.87011719 + scale_params: 1888.64001465 + scale_params: 1888.64001465 + scale_params: 1736.47998047 + scale_params: 1736.47998047 + scale_params: 1736.47998047 + scale_params: 1736.47998047 + scale_params: 1736.47998047 + scale_params: 1736.47998047 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1675.81994629 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 1104.5 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + scale_params: 552.33001709 + } +} +layer { + name: "relu4_3" + type: "ReLU" + bottom: "conv4_3" + top: "conv4_3" +} +layer { + name: "pool4" + type: "Pooling" + bottom: "conv4_3" + top: "pool4" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv5_1" + type: "Convolution" + bottom: "pool4" + top: "conv5_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + dilation: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.40000000596 + scale_out: 0.550000011921 + scale_params: 2478.54003906 + scale_params: 1582.67004395 + scale_params: 1582.67004395 + scale_params: 1334.19995117 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 906.510009766 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 893.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 813.450012207 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + scale_params: 766.260009766 + } +} +layer { + name: "relu5_1" + type: "ReLU" + bottom: "conv5_1" + top: "conv5_1" +} +layer { + name: "conv5_2" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + dilation: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 0.550000011921 + scale_out: 1.16999995708 + scale_params: 4393.54980469 + scale_params: 2159.55004883 + scale_params: 2159.55004883 + scale_params: 2159.55004883 + scale_params: 2159.55004883 + scale_params: 2159.55004883 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1500.56994629 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1429.85998535 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1260.68994141 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 1122.52001953 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 991.059997559 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + scale_params: 838.429992676 + } +} +layer { + name: "relu5_2" + type: "ReLU" + bottom: "conv5_2" + top: "conv5_2" +} +layer { + name: "conv5_3" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + dilation: 1 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 1.16999995708 + scale_out: 1.78999996185 + scale_params: 2642.02001953 + scale_params: 2642.02001953 + scale_params: 2642.02001953 + scale_params: 2642.02001953 + scale_params: 2642.02001953 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 2435.19995117 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1582.06994629 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 1296.56005859 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 876.650024414 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + scale_params: 717.200012207 + } +} +layer { + name: "relu5_3" + type: "ReLU" + bottom: "conv5_3" + top: "conv5_3" +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5_3" + top: "pool5" + pooling_param { + pool: MAX + pad: 1 + kernel_size: 3 + stride: 1 + } +} +layer { + name: "fc6" + type: "Convolution" + bottom: "pool5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 1024 + pad: 6 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + dilation: 6 + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 1.78999996185 + scale_out: 5.80999994278 + scale_params: 6667.35009766 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1641.18994141 + scale_params: 1625.64001465 + scale_params: 1625.64001465 + scale_params: 1625.64001465 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 1203.82995605 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 763.929992676 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 758.979980469 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + scale_params: 581.219970703 + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "Convolution" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 1024 + kernel_size: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 5.80999994278 + scale_out: 23.5200004578 + scale_params: 5335.41992188 + scale_params: 4919.85986328 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 2130.0300293 + scale_params: 1986.76000977 + scale_params: 1986.76000977 + scale_params: 1986.76000977 + scale_params: 1986.76000977 + scale_params: 1986.76000977 + scale_params: 1986.76000977 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1702.35998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1689.60998535 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1540.18005371 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1517.19995117 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1476.67004395 + scale_params: 1247.89001465 + scale_params: 1247.89001465 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1130.05004883 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1099.45996094 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1065.60998535 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 1011.57000732 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + scale_params: 937.08001709 + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "conv6_1" + type: "Convolution" + bottom: "fc7" + top: "conv6_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 23.5200004578 + scale_out: 41.3400001526 + scale_params: 3420.12011719 + scale_params: 2573.72998047 + scale_params: 2163.06005859 + scale_params: 2163.06005859 + scale_params: 1726.82995605 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1166.30004883 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 1145.18005371 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 889.789978027 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + scale_params: 590.469970703 + } +} +layer { + name: "conv6_1_relu" + type: "ReLU" + bottom: "conv6_1" + top: "conv6_1" +} +layer { + name: "conv6_2" + type: "Convolution" + bottom: "conv6_1" + top: "conv6_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 512 + pad: 1 + kernel_size: 3 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 41.3400001526 + scale_out: 32.3899993896 + scale_params: 4563.24023438 + scale_params: 2825.7800293 + scale_params: 2825.7800293 + scale_params: 2825.7800293 + scale_params: 2825.7800293 + scale_params: 2815.77001953 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2512.55004883 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2414.67993164 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 2062.47998047 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1942.15002441 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1827.07995605 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1826.65002441 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + scale_params: 1789.36999512 + } +} +layer { + name: "conv6_2_relu" + type: "ReLU" + bottom: "conv6_2" + top: "conv6_2" +} +layer { + name: "conv7_1" + type: "Convolution" + bottom: "conv6_2" + top: "conv7_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 32.3899993896 + scale_out: 20.6700000763 + scale_params: 1504.39001465 + scale_params: 1504.39001465 + scale_params: 1504.39001465 + scale_params: 1504.39001465 + scale_params: 1504.39001465 + scale_params: 1469.79003906 + scale_params: 1469.79003906 + scale_params: 1469.79003906 + scale_params: 1445.40002441 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1155.7199707 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 1089.39001465 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 908.510009766 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + scale_params: 882.909973145 + } +} +layer { + name: "conv7_1_relu" + type: "ReLU" + bottom: "conv7_1" + top: "conv7_1" +} +layer { + name: "conv7_2" + type: "Convolution" + bottom: "conv7_1" + top: "conv7_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 1 + kernel_size: 3 + stride: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 20.6700000763 + scale_out: 14.25 + scale_params: 1999.15002441 + scale_params: 1999.15002441 + scale_params: 1999.15002441 + scale_params: 1924.95996094 + scale_params: 1924.95996094 + scale_params: 1924.95996094 + scale_params: 1924.95996094 + scale_params: 1924.95996094 + scale_params: 1924.95996094 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1762.43994141 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1651.68005371 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1419.30004883 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + scale_params: 1246.82995605 + } +} +layer { + name: "conv7_2_relu" + type: "ReLU" + bottom: "conv7_2" + top: "conv7_2" +} +layer { + name: "conv8_1" + type: "Convolution" + bottom: "conv7_2" + top: "conv8_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 14.25 + scale_out: 18.6299991608 + scale_params: 1531.85998535 + scale_params: 1284.55004883 + scale_params: 1284.55004883 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 878.679992676 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 819.570007324 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + scale_params: 646.679992676 + } +} +layer { + name: "conv8_1_relu" + type: "ReLU" + bottom: "conv8_1" + top: "conv8_1" +} +layer { + name: "conv8_2" + type: "Convolution" + bottom: "conv8_1" + top: "conv8_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.6299991608 + scale_out: 18.4300003052 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2305.30004883 + scale_params: 2215.12011719 + scale_params: 2215.12011719 + scale_params: 2116.81005859 + scale_params: 2116.81005859 + scale_params: 2116.81005859 + scale_params: 2116.81005859 + scale_params: 2093.39990234 + scale_params: 2093.39990234 + scale_params: 2093.39990234 + scale_params: 2093.39990234 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1834.88000488 + scale_params: 1805.35998535 + scale_params: 1805.35998535 + scale_params: 1805.35998535 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1778.84997559 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + scale_params: 1516.22998047 + } +} +layer { + name: "conv8_2_relu" + type: "ReLU" + bottom: "conv8_2" + top: "conv8_2" +} +layer { + name: "conv9_1" + type: "Convolution" + bottom: "conv8_2" + top: "conv9_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.4300003052 + scale_out: 16.2800006866 + scale_params: 1559.70996094 + scale_params: 1559.70996094 + scale_params: 1559.70996094 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 943.429992676 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + scale_params: 864.780029297 + } +} +layer { + name: "conv9_1_relu" + type: "ReLU" + bottom: "conv9_1" + top: "conv9_1" +} +layer { + name: "conv9_2" + type: "Convolution" + bottom: "conv9_1" + top: "conv9_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 16.2800006866 + scale_out: 10.6199998856 + scale_params: 1979.5 + scale_params: 1979.5 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1946.7800293 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1861.68994141 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + scale_params: 1733.91003418 + } +} +layer { + name: "conv9_2_relu" + type: "ReLU" + bottom: "conv9_2" + top: "conv9_2" +} +layer { + name: "conv4_3_norm" + type: "Normalize" + bottom: "conv4_3" + top: "conv4_3_norm" + norm_param { + across_spatial: false + scale_filler { + type: "constant" + value: 20.0 + } + channel_shared: false + } +} +layer { + name: "conv4_3_norm_mbox_loc" + type: "Convolution" + bottom: "conv4_3_norm" + top: "conv4_3_norm_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 16 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 22.3600006104 + scale_out: 9.88000011444 + scale_params: 1349.27001953 + scale_params: 1349.27001953 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + scale_params: 247.979995728 + } +} +layer { + name: "conv4_3_norm_mbox_loc_perm" + type: "Permute" + bottom: "conv4_3_norm_mbox_loc" + top: "conv4_3_norm_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv4_3_norm_mbox_loc_flat" + type: "Flatten" + bottom: "conv4_3_norm_mbox_loc_perm" + top: "conv4_3_norm_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv4_3_norm_mbox_conf" + type: "Convolution" + bottom: "conv4_3_norm" + top: "conv4_3_norm_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 84 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 22.3600006104 + scale_out: 9.13000011444 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 819.359985352 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + scale_params: 793.659973145 + } +} +layer { + name: "conv4_3_norm_mbox_conf_perm" + type: "Permute" + bottom: "conv4_3_norm_mbox_conf" + top: "conv4_3_norm_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv4_3_norm_mbox_conf_flat" + type: "Flatten" + bottom: "conv4_3_norm_mbox_conf_perm" + top: "conv4_3_norm_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv4_3_norm_mbox_priorbox" + type: "PriorBox" + bottom: "conv4_3_norm" + bottom: "data" + top: "conv4_3_norm_mbox_priorbox" + prior_box_param { + min_size: 30.0 + max_size: 60.0 + aspect_ratio: 2.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 8.0 + offset: 0.5 + } +} +layer { + name: "fc7_mbox_loc" + type: "Convolution" + bottom: "fc7" + top: "fc7_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 23.5200004578 + scale_out: 28.1800003052 + scale_params: 2240.48999023 + scale_params: 1874.27001953 + scale_params: 1874.27001953 + scale_params: 1874.27001953 + scale_params: 1874.27001953 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1800.90002441 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + scale_params: 1580.34997559 + } +} +layer { + name: "fc7_mbox_loc_perm" + type: "Permute" + bottom: "fc7_mbox_loc" + top: "fc7_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "fc7_mbox_loc_flat" + type: "Flatten" + bottom: "fc7_mbox_loc_perm" + top: "fc7_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "fc7_mbox_conf" + type: "Convolution" + bottom: "fc7" + top: "fc7_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 126 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 23.5200004578 + scale_out: 4.11999988556 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 1281.80004883 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + scale_params: 975.270019531 + } +} +layer { + name: "fc7_mbox_conf_perm" + type: "Permute" + bottom: "fc7_mbox_conf" + top: "fc7_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "fc7_mbox_conf_flat" + type: "Flatten" + bottom: "fc7_mbox_conf_perm" + top: "fc7_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "fc7_mbox_priorbox" + type: "PriorBox" + bottom: "fc7" + bottom: "data" + top: "fc7_mbox_priorbox" + prior_box_param { + min_size: 60.0 + max_size: 111.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 16.0 + offset: 0.5 + } +} +layer { + name: "conv6_2_mbox_loc" + type: "Convolution" + bottom: "conv6_2" + top: "conv6_2_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 32.3899993896 + scale_out: 30.3400001526 + scale_params: 1858.48999023 + scale_params: 1858.48999023 + scale_params: 1624.2199707 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + scale_params: 1448.85998535 + } +} +layer { + name: "conv6_2_mbox_loc_perm" + type: "Permute" + bottom: "conv6_2_mbox_loc" + top: "conv6_2_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv6_2_mbox_loc_flat" + type: "Flatten" + bottom: "conv6_2_mbox_loc_perm" + top: "conv6_2_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv6_2_mbox_conf" + type: "Convolution" + bottom: "conv6_2" + top: "conv6_2_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 126 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 32.3899993896 + scale_out: 4.40999984741 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 911.640014648 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + scale_params: 886.849975586 + } +} +layer { + name: "conv6_2_mbox_conf_perm" + type: "Permute" + bottom: "conv6_2_mbox_conf" + top: "conv6_2_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv6_2_mbox_conf_flat" + type: "Flatten" + bottom: "conv6_2_mbox_conf_perm" + top: "conv6_2_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv6_2_mbox_priorbox" + type: "PriorBox" + bottom: "conv6_2" + bottom: "data" + top: "conv6_2_mbox_priorbox" + prior_box_param { + min_size: 111.0 + max_size: 162.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 32.0 + offset: 0.5 + } +} +layer { + name: "conv7_2_mbox_loc" + type: "Convolution" + bottom: "conv7_2" + top: "conv7_2_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 14.25 + scale_out: 26.8600006104 + scale_params: 1494.33996582 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + scale_params: 1228.0300293 + } +} +layer { + name: "conv7_2_mbox_loc_perm" + type: "Permute" + bottom: "conv7_2_mbox_loc" + top: "conv7_2_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv7_2_mbox_loc_flat" + type: "Flatten" + bottom: "conv7_2_mbox_loc_perm" + top: "conv7_2_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv7_2_mbox_conf" + type: "Convolution" + bottom: "conv7_2" + top: "conv7_2_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 126 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 14.25 + scale_out: 4.65999984741 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 1211.57995605 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 969.75 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + scale_params: 896.140014648 + } +} +layer { + name: "conv7_2_mbox_conf_perm" + type: "Permute" + bottom: "conv7_2_mbox_conf" + top: "conv7_2_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv7_2_mbox_conf_flat" + type: "Flatten" + bottom: "conv7_2_mbox_conf_perm" + top: "conv7_2_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv7_2_mbox_priorbox" + type: "PriorBox" + bottom: "conv7_2" + bottom: "data" + top: "conv7_2_mbox_priorbox" + prior_box_param { + min_size: 162.0 + max_size: 213.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 64.0 + offset: 0.5 + } +} +layer { + name: "conv8_2_mbox_loc" + type: "Convolution" + bottom: "conv8_2" + top: "conv8_2_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 16 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.4300003052 + scale_out: 26.6599998474 + scale_params: 2108.98999023 + scale_params: 2108.98999023 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1795.97998047 + scale_params: 1473.22998047 + scale_params: 1473.22998047 + scale_params: 1359.68994141 + scale_params: 1359.68994141 + } +} +layer { + name: "conv8_2_mbox_loc_perm" + type: "Permute" + bottom: "conv8_2_mbox_loc" + top: "conv8_2_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv8_2_mbox_loc_flat" + type: "Flatten" + bottom: "conv8_2_mbox_loc_perm" + top: "conv8_2_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv8_2_mbox_conf" + type: "Convolution" + bottom: "conv8_2" + top: "conv8_2_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 84 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 18.4300003052 + scale_out: 5.67999982834 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1163.66003418 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + scale_params: 1086.95996094 + } +} +layer { + name: "conv8_2_mbox_conf_perm" + type: "Permute" + bottom: "conv8_2_mbox_conf" + top: "conv8_2_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv8_2_mbox_conf_flat" + type: "Flatten" + bottom: "conv8_2_mbox_conf_perm" + top: "conv8_2_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv8_2_mbox_priorbox" + type: "PriorBox" + bottom: "conv8_2" + bottom: "data" + top: "conv8_2_mbox_priorbox" + prior_box_param { + min_size: 213.0 + max_size: 264.0 + aspect_ratio: 2.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 100.0 + offset: 0.5 + } +} +layer { + name: "conv9_2_mbox_loc" + type: "Convolution" + bottom: "conv9_2" + top: "conv9_2_mbox_loc" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 16 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 10.6199998856 + scale_out: 35.0900001526 + scale_params: 1395.75 + scale_params: 1395.75 + scale_params: 1395.75 + scale_params: 1182.09997559 + scale_params: 1182.09997559 + scale_params: 1182.09997559 + scale_params: 1182.09997559 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + scale_params: 1117.32995605 + } +} +layer { + name: "conv9_2_mbox_loc_perm" + type: "Permute" + bottom: "conv9_2_mbox_loc" + top: "conv9_2_mbox_loc_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv9_2_mbox_loc_flat" + type: "Flatten" + bottom: "conv9_2_mbox_loc_perm" + top: "conv9_2_mbox_loc_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv9_2_mbox_conf" + type: "Convolution" + bottom: "conv9_2" + top: "conv9_2_mbox_conf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 84 + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } + quantization_param { + precision: DYNAMIC_FIXED_POINT + bw_layer_in: 8 + bw_layer_out: 8 + bw_params: 8 + scale_in: 10.6199998856 + scale_out: 5.92000007629 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 806.66998291 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 718.020019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + scale_params: 539.520019531 + } +} +layer { + name: "conv9_2_mbox_conf_perm" + type: "Permute" + bottom: "conv9_2_mbox_conf" + top: "conv9_2_mbox_conf_perm" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "conv9_2_mbox_conf_flat" + type: "Flatten" + bottom: "conv9_2_mbox_conf_perm" + top: "conv9_2_mbox_conf_flat" + flatten_param { + axis: 1 + } +} +layer { + name: "conv9_2_mbox_priorbox" + type: "PriorBox" + bottom: "conv9_2" + bottom: "data" + top: "conv9_2_mbox_priorbox" + prior_box_param { + min_size: 264.0 + max_size: 315.0 + aspect_ratio: 2.0 + flip: true + clip: false + variance: 0.10000000149 + variance: 0.10000000149 + variance: 0.20000000298 + variance: 0.20000000298 + step: 300.0 + offset: 0.5 + } +} +layer { + name: "mbox_loc" + type: "Concat" + bottom: "conv4_3_norm_mbox_loc_flat" + bottom: "fc7_mbox_loc_flat" + bottom: "conv6_2_mbox_loc_flat" + bottom: "conv7_2_mbox_loc_flat" + bottom: "conv8_2_mbox_loc_flat" + bottom: "conv9_2_mbox_loc_flat" + top: "mbox_loc" + concat_param { + axis: 1 + } +} +layer { + name: "mbox_conf" + type: "Concat" + bottom: "conv4_3_norm_mbox_conf_flat" + bottom: "fc7_mbox_conf_flat" + bottom: "conv6_2_mbox_conf_flat" + bottom: "conv7_2_mbox_conf_flat" + bottom: "conv8_2_mbox_conf_flat" + bottom: "conv9_2_mbox_conf_flat" + top: "mbox_conf" + concat_param { + axis: 1 + } +} +layer { + name: "mbox_priorbox" + type: "Concat" + bottom: "conv4_3_norm_mbox_priorbox" + bottom: "fc7_mbox_priorbox" + bottom: "conv6_2_mbox_priorbox" + bottom: "conv7_2_mbox_priorbox" + bottom: "conv8_2_mbox_priorbox" + bottom: "conv9_2_mbox_priorbox" + top: "mbox_priorbox" + concat_param { + axis: 2 + } +} +layer { + name: "mbox_conf_reshape" + type: "Reshape" + bottom: "mbox_conf" + top: "mbox_conf_reshape" + reshape_param { + shape { + dim: 0 + dim: -1 + dim: 21 + } + } +} +layer { + name: "mbox_conf_softmax" + type: "Softmax" + bottom: "mbox_conf_reshape" + top: "mbox_conf_softmax" + softmax_param { + axis: 2 + } +} +layer { + name: "mbox_conf_flatten" + type: "Flatten" + bottom: "mbox_conf_softmax" + top: "mbox_conf_flatten" + flatten_param { + axis: 1 + } +} +layer { + name: "detection_out" + type: "DetectionOutput" + bottom: "mbox_loc" + bottom: "mbox_conf_flatten" + bottom: "mbox_priorbox" + top: "detection_out" + include { + phase: TEST + } + detection_output_param { + num_classes: 21 + share_location: true + background_label_id: 0 + nms_param { + nms_threshold: 0.449999988079 + top_k: 400 + } + code_type: CENTER_SIZE + keep_top_k: 200 + confidence_threshold: 0.00999999977648 + } +} diff --git a/models/intel_optimized_models/multinode/alexnet_bn_32nodes/train_val2.prototxt b/models/intel_optimized_models/multinode/alexnet_bn_32nodes/train_val2.prototxt index 584f292b0..48046d17d 100644 --- a/models/intel_optimized_models/multinode/alexnet_bn_32nodes/train_val2.prototxt +++ b/models/intel_optimized_models/multinode/alexnet_bn_32nodes/train_val2.prototxt @@ -3,8 +3,6 @@ #------------------------------------------ name: "AlexNet_bn" -engine:"MKL2017" - #default_conv_algos_override: "1,1,1" #default_cudnn_math_override: 0 diff --git a/models/intel_optimized_models/multinode/alexnet_bn_64nodes/train_val2.prototxt b/models/intel_optimized_models/multinode/alexnet_bn_64nodes/train_val2.prototxt index a7b789dbf..f02068fcc 100644 --- a/models/intel_optimized_models/multinode/alexnet_bn_64nodes/train_val2.prototxt +++ b/models/intel_optimized_models/multinode/alexnet_bn_64nodes/train_val2.prototxt @@ -3,8 +3,6 @@ #------------------------------------------ name: "AlexNet_bn" -engine:"MKL2017" - #default_conv_algos_override: "1,1,1" #default_cudnn_math_override: 0 diff --git a/models/intel_optimized_models/multinode/default_resnet50_16nodes/solver.prototxt b/models/intel_optimized_models/multinode/default_resnet50_16nodes/solver.prototxt index 27054d7d2..b5f73dee9 100644 --- a/models/intel_optimized_models/multinode/default_resnet50_16nodes/solver.prototxt +++ b/models/intel_optimized_models/multinode/default_resnet50_16nodes/solver.prototxt @@ -1,6 +1,6 @@ net: "models/intel_optimized_models/multinode/default_resnet50_16nodes/train_val.prototxt" test_iter: 1000 -test_interval: 625 +test_interval: 563 test_initialization: false display: 40 base_lr: 0.8 @@ -9,11 +9,11 @@ stepvalue:18750 stepvalue:37500 stepvalue:50000 gamma: 0.1 -max_iter: 62556 # 56300 +max_iter: 56300 warmup_iter: 3125 # 1281167 / 2048 * 5 epochs warmup_start_lr: 0.1 momentum: 0.9 weight_decay: 0.0001 -snapshot: 6250 +snapshot: 5630 snapshot_prefix: "default_resnet_50_16_nodes" solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/solver.prototxt b/models/intel_optimized_models/multinode/default_resnet50_64nodes/solver.prototxt similarity index 54% rename from models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/solver.prototxt rename to models/intel_optimized_models/multinode/default_resnet50_64nodes/solver.prototxt index 4f4f21a93..1729d9320 100644 --- a/models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/solver.prototxt +++ b/models/intel_optimized_models/multinode/default_resnet50_64nodes/solver.prototxt @@ -1,6 +1,6 @@ -net: "models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/train_val.prototxt" +net: "models/intel_optimized_models/multinode/default_resnet50_64nodes/train_val.prototxt" test_iter: 1000 -test_interval: 156 +test_interval: 140 test_initialization: false display: 40 base_lr: 3.2 @@ -14,6 +14,6 @@ warmup_iter: 780 # 1281167 / 8192 * 5 epochs warmup_start_lr: 0.1 momentum: 0.9 weight_decay: 0.0001 -snapshot: 156 -snapshot_prefix: "models/intel_optimized_models/multinode/resnet_50_64_nodes_8k_batch/resnet_50_64_nodes_8k" +snapshot: 1408 +snapshot_prefix: "default_resnet_50_64_nodes" solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/train_val.prototxt b/models/intel_optimized_models/multinode/default_resnet50_64nodes/train_val.prototxt similarity index 99% rename from models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/train_val.prototxt rename to models/intel_optimized_models/multinode/default_resnet50_64nodes/train_val.prototxt index d98323ed6..de4efad2b 100644 --- a/models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/train_val.prototxt +++ b/models/intel_optimized_models/multinode/default_resnet50_64nodes/train_val.prototxt @@ -1,4 +1,5 @@ name: "ResNet-50" +bn_stats_batch_size: 32 layer { name: "data" type: "Data" @@ -25,7 +26,7 @@ layer { } data_param { source: "examples/imagenet/ilsvrc12_train_lmdb" - batch_size: 32 + batch_size: 128 backend: LMDB prefetch: 2 shuffle: true @@ -782,7 +783,7 @@ layer { num_output: 128 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -840,7 +841,7 @@ layer { num_output: 128 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -1568,7 +1569,7 @@ layer { num_output: 256 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -1626,7 +1627,7 @@ layer { num_output: 256 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -2726,7 +2727,7 @@ layer { num_output: 512 kernel_size: 1 pad: 0 - stride: 1 + stride: 2 bias_term: false weight_filler { type: "msra" @@ -2784,7 +2785,7 @@ layer { num_output: 512 kernel_size: 3 pad: 1 - stride: 2 + stride: 1 bias_term: false weight_filler { type: "msra" @@ -3301,6 +3302,9 @@ layer { top: "loss" name: "prob" type: "SoftmaxWithLoss" + include { + phase: TRAIN + } } layer { name: "loss3/top-1" diff --git a/models/intel_optimized_models/multinode/default_resnet50_8nodes/solver.prototxt b/models/intel_optimized_models/multinode/default_resnet50_8nodes/solver.prototxt new file mode 100644 index 000000000..6cab44e72 --- /dev/null +++ b/models/intel_optimized_models/multinode/default_resnet50_8nodes/solver.prototxt @@ -0,0 +1,17 @@ +net: "models/intel_optimized_models/multinode/default_resnet50_8nodes/train_val.prototxt" +test_iter: 1000 +test_interval: 1126 +test_initialization: false +display: 40 +base_lr: 0.4 +lr_policy: "multistep" +stepvalue:37440 +stepvalue:74880 +stepvalue:99840 +gamma: 0.1 +max_iter: 112600 +momentum: 0.9 +weight_decay: 0.0001 +snapshot: 11260 +snapshot_prefix: "default_resnet_50_8_nodes" +solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/train_val.prototxt b/models/intel_optimized_models/multinode/default_resnet50_8nodes/train_val.prototxt similarity index 93% rename from models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/train_val.prototxt rename to models/intel_optimized_models/multinode/default_resnet50_8nodes/train_val.prototxt index 75bff6269..de4efad2b 100644 --- a/models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/train_val.prototxt +++ b/models/intel_optimized_models/multinode/default_resnet50_8nodes/train_val.prototxt @@ -1,3322 +1,3325 @@ -name: "ResNet-50" -bn_stats_batch_size: 32 -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TRAIN - } - transform_param { - mirror: true - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_aspect_ratio_param { - min_area_ratio: 0.08 - max_area_ratio: 1 - aspect_ratio_change: 0.75 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_train_lmdb" - batch_size: 128 - backend: LMDB - prefetch: 2 - shuffle: true - } -} -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TEST - } - transform_param { - mirror: false - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_resize_param { - min_size: 256 - max_size: 256 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_val_lmdb" - batch_size: 50 - backend: LMDB - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "msra" - variance_norm: FAN_OUT - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c" - top: "res3a_branch2a" - name: "res3a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "loss" - name: "prob" - type: "SoftmaxWithLoss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - accuracy_param { - top_k: 5 - } -} +name: "ResNet-50" +bn_stats_batch_size: 32 +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 224 + scale: 0.0078125 + mean_value: 104 + mean_value: 117 + mean_value: 123 + random_aspect_ratio_param { + min_area_ratio: 0.08 + max_area_ratio: 1 + aspect_ratio_change: 0.75 + resize_param { + interp_mode: CUBIC + } + } + } + data_param { + source: "examples/imagenet/ilsvrc12_train_lmdb" + batch_size: 128 + backend: LMDB + prefetch: 2 + shuffle: true + } +} +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mirror: false + crop_size: 224 + scale: 0.0078125 + mean_value: 104 + mean_value: 117 + mean_value: 123 + random_resize_param { + min_size: 256 + max_size: 256 + resize_param { + interp_mode: CUBIC + } + } + } + data_param { + source: "examples/imagenet/ilsvrc12_val_lmdb" + batch_size: 50 + backend: LMDB + } +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + weight_filler { + type: "msra" + variance_norm: FAN_OUT + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" + relu_param { + } +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "res2a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2b" + name: "res2a_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "res2a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a_branch1" + bottom: "res2a_branch2c" + top: "res2a" + name: "res2a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2a" + top: "res2a" + name: "res2a_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "res2b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2b" + name: "res2b_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "res2b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2a" + bottom: "res2b_branch2c" + top: "res2b" + name: "res2b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2b" + top: "res2b" + name: "res2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "res2c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2b" + name: "res2c_branch2b" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "res2c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "res3a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2b" + name: "res3a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "res3a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a_branch1" + bottom: "res3a_branch2c" + top: "res3a" + name: "res3a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3a" + top: "res3a" + name: "res3a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3a" + top: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "res4a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2b" + name: "res4a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "res4a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a_branch1" + bottom: "res4a_branch2c" + top: "res4a" + name: "res4a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4a" + top: "res4a" + name: "res4a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4a" + top: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "res5a_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2b" + name: "res5a_branch2b" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "res5a_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a_branch1" + bottom: "res5a_branch2c" + top: "res5a" + name: "res5a" + type: "Eltwise" + eltwise_param { + + } +} + +layer { + bottom: "res5a" + top: "res5a" + name: "res5a_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "res5b_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2b" + name: "res5b_branch2b" + type: "Convolution" + convolution_param { + + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "res5b_branch2b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5a" + bottom: "res5b_branch2c" + top: "res5b" + name: "res5b" + type: "Eltwise" + eltwise_param { + } +} + +layer { + bottom: "res5b" + top: "res5b" + name: "res5b_relu" + type: "ReLU" + relu_param { + + } +} + +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 + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "res5c_branch2a_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2b" + name: "res5c_branch2b" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 1 } + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" + relu_param { + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + weight_filler { + type: "msra" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + param { lr_mult: 0 } + param { lr_mult: 0 } + param { lr_mult: 0 } + batch_norm_param { + moving_average_fraction: 0.9 + filler { value: 0 } + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + param { decay_mult: 0 } + param { decay_mult: 0 } + scale_param { + bias_term: true + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" + eltwise_param { + } +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" + relu_param { + + } +} + +layer { + bottom: "res5c" + top: "pool5" + name: "pool5" + type: "Pooling" + pooling_param { + kernel_size: 7 + stride: 1 + pool: AVE + } +} + +layer { + bottom: "pool5" + top: "fc1000" + name: "fc1000" + type: "InnerProduct" + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + bottom: "fc1000" + bottom: "label" + top: "loss" + name: "prob" + type: "SoftmaxWithLoss" + include { + phase: TRAIN + } +} +layer { + name: "loss3/top-1" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "loss3/top-1" +} +layer { + name: "loss3/top-5" + type: "Accuracy" + bottom: "fc1000" + bottom: "label" + top: "loss3/top-5" + accuracy_param { + top_k: 5 + } +} diff --git a/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/solver.prototxt b/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/solver.prototxt new file mode 100644 index 000000000..e1d42882c --- /dev/null +++ b/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/solver.prototxt @@ -0,0 +1,25 @@ +net: "models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/train_val.prototxt" + +warmup_iter: 3125 +warmup_start_lr: 0.05 + +test_iter: 1000 +test_interval: 6250 +test_initialization: false + +display: 100 + +max_iter: 62500 # 100 epochs +base_lr: 0.6 + +lr_policy: "poly" +power: 2 +momentum: 0.9 +weight_decay: 0.0002 + +snapshot: 6250 +snapshot_prefix: "models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/snapshots/googlenet_v3" + +random_seed: 1 + +solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/train_val.prototxt b/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/train_val.prototxt new file mode 100644 index 000000000..6ee6ebc5a --- /dev/null +++ b/models/intel_optimized_models/multinode/googlenet_v3_32nodes_2k_batch/train_val.prototxt @@ -0,0 +1,3794 @@ +name: "InceptionV3" +bn_stats_batch_size: 32 +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + data_param { + source: "examples/imagenet/ilsvrc12_train_lmdb" + shuffle: true + backend: LMDB + batch_size: 64 + } + transform_param { + crop_size: 299 + mean_value: 104 + mean_value: 117 + mean_value: 123 + + mirror: true + + random_aspect_ratio_param { + min_area_ratio: 0.05 + max_area_ratio: 1 + aspect_ratio_change: 0.75 + max_attempt: 100 + resize_param { + interp_mode: CUBIC + } + } + } + include: { phase: TRAIN } +} +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + data_param { + source: "examples/imagenet/ilsvrc12_val_lmdb" + shuffle: false + backend: LMDB + batch_size: 50 + } + transform_param { + crop_size: 299 + mean_value: 104 + mean_value: 117 + mean_value: 123 + + mirror: false + + random_resize_param { + min_size: 320 + max_size: 320 + resize_param { + interp_mode: CUBIC + } + } + } + include: { phase: TEST } +} +layer { + name: "conv_conv2d" + type: "Convolution" + bottom: "data" + top: "conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "conv_batchnorm" + type: "BatchNorm" + bottom: "conv_conv2d" + top: "conv_conv2d_bn" + + batch_norm_param { + } +} +layer { + name: "conv_relu" + type: "ReLU" + bottom: "conv_conv2d_bn" + top: "conv_conv2d_relu" +} +layer { + name: "conv_1_1_conv2d" + type: "Convolution" + bottom: "conv_conv2d_relu" + top: "conv_1_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "conv_1_1_batchnorm" + type: "BatchNorm" + bottom: "conv_1_1_conv2d" + top: "conv_1_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_1_1_relu" + type: "ReLU" + bottom: "conv_1_1_conv2d_bn" + top: "conv_1_1_conv2d_relu" +} +layer { + name: "conv_2_2_conv2d" + type: "Convolution" + bottom: "conv_1_1_conv2d_relu" + top: "conv_2_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "conv_2_2_batchnorm" + type: "BatchNorm" + bottom: "conv_2_2_conv2d" + top: "conv_2_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_2_2_relu" + type: "ReLU" + bottom: "conv_2_2_conv2d_bn" + top: "conv_2_2_conv2d_relu" +} +layer { + name: "pool" + type: "Pooling" + bottom: "conv_2_2_conv2d_relu" + top: "pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv_3_3_conv2d" + type: "Convolution" + bottom: "pool" + top: "conv_3_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 80 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "conv_3_3_batchnorm" + type: "BatchNorm" + bottom: "conv_3_3_conv2d" + top: "conv_3_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_3_3_relu" + type: "ReLU" + bottom: "conv_3_3_conv2d_bn" + top: "conv_3_3_conv2d_relu" +} +layer { + name: "conv_4_4_conv2d" + type: "Convolution" + bottom: "conv_3_3_conv2d_relu" + top: "conv_4_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "conv_4_4_batchnorm" + type: "BatchNorm" + bottom: "conv_4_4_conv2d" + top: "conv_4_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "conv_4_4_relu" + type: "ReLU" + bottom: "conv_4_4_conv2d_bn" + top: "conv_4_4_conv2d_relu" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv_4_4_conv2d_relu" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "mixed_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_conv_conv2d" + top: "mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_conv_relu" + type: "ReLU" + bottom: "mixed_conv_conv2d_bn" + top: "mixed_conv_conv2d_relu" +} +layer { + name: "mixed_tower_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_conv_conv2d" + top: "mixed_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_conv_relu" + type: "ReLU" + bottom: "mixed_tower_conv_conv2d_bn" + top: "mixed_tower_conv_conv2d_relu" +} +layer { + name: "mixed_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_tower_conv_conv2d_relu" + top: "mixed_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_conv_1_conv2d" + top: "mixed_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_tower_conv_1_conv2d_bn" + top: "mixed_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_conv2d" + type: "Convolution" + bottom: "pool1" + top: "mixed_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_conv2d" + top: "mixed_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_conv2d_bn" + top: "mixed_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_tower_1_conv_conv2d_relu" + top: "mixed_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_1_conv2d" + top: "mixed_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_1_conv2d_bn" + top: "mixed_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_tower_1_conv_1_conv2d_relu" + top: "mixed_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_1_conv_2_conv2d" + top: "mixed_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_tower_1_conv_2_conv2d_bn" + top: "mixed_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_pool" + type: "Pooling" + bottom: "pool1" + top: "AVE_pool_mixed_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_pool" + top: "mixed_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_tower_2_conv_conv2d" + top: "mixed_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_tower_2_conv_conv2d_bn" + top: "mixed_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_chconcat" + type: "Concat" + bottom: "mixed_conv_conv2d_relu" + bottom: "mixed_tower_conv_1_conv2d_relu" + bottom: "mixed_tower_1_conv_2_conv2d_relu" + bottom: "mixed_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_conv_conv2d" + top: "mixed_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_conv_relu" + type: "ReLU" + bottom: "mixed_1_conv_conv2d_bn" + top: "mixed_1_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_conv_conv2d" + top: "mixed_1_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_conv_conv2d_bn" + top: "mixed_1_tower_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_conv_conv2d_relu" + top: "mixed_1_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_conv_1_conv2d" + top: "mixed_1_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_1_tower_conv_1_conv2d_bn" + top: "mixed_1_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_chconcat" + top: "mixed_1_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_conv2d" + top: "mixed_1_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_conv2d_bn" + top: "mixed_1_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_1_conv_conv2d_relu" + top: "mixed_1_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_1_conv2d" + top: "mixed_1_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_1_conv2d_bn" + top: "mixed_1_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_1_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_1_tower_1_conv_1_conv2d_relu" + top: "mixed_1_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_1_conv_2_conv2d" + top: "mixed_1_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_1_tower_1_conv_2_conv2d_bn" + top: "mixed_1_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_1_pool" + type: "Pooling" + bottom: "ch_concat_mixed_chconcat" + top: "AVE_pool_mixed_1_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_1_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_1_pool" + top: "mixed_1_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_1_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_1_tower_2_conv_conv2d" + top: "mixed_1_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_1_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_1_tower_2_conv_conv2d_bn" + top: "mixed_1_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_1_chconcat" + type: "Concat" + bottom: "mixed_1_conv_conv2d_relu" + bottom: "mixed_1_tower_conv_1_conv2d_relu" + bottom: "mixed_1_tower_1_conv_2_conv2d_relu" + bottom: "mixed_1_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_1_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_2_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_conv_conv2d" + top: "mixed_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_conv_relu" + type: "ReLU" + bottom: "mixed_2_conv_conv2d_bn" + top: "mixed_2_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_conv_conv2d" + top: "mixed_2_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_conv_conv2d_bn" + top: "mixed_2_tower_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_conv_conv2d_relu" + top: "mixed_2_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_conv_1_conv2d" + top: "mixed_2_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_2_tower_conv_1_conv2d_bn" + top: "mixed_2_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_1_chconcat" + top: "mixed_2_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_conv2d" + top: "mixed_2_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_conv2d_bn" + top: "mixed_2_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_1_conv_conv2d_relu" + top: "mixed_2_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_1_conv2d" + top: "mixed_2_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_1_conv2d_bn" + top: "mixed_2_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_2_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_2_tower_1_conv_1_conv2d_relu" + top: "mixed_2_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_1_conv_2_conv2d" + top: "mixed_2_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_2_tower_1_conv_2_conv2d_bn" + top: "mixed_2_tower_1_conv_2_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_2_pool" + type: "Pooling" + bottom: "ch_concat_mixed_1_chconcat" + top: "AVE_pool_mixed_2_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_2_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_2_pool" + top: "mixed_2_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_2_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_2_tower_2_conv_conv2d" + top: "mixed_2_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_2_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_2_tower_2_conv_conv2d_bn" + top: "mixed_2_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_2_chconcat" + type: "Concat" + bottom: "mixed_2_conv_conv2d_relu" + bottom: "mixed_2_tower_conv_1_conv2d_relu" + bottom: "mixed_2_tower_1_conv_2_conv2d_relu" + bottom: "mixed_2_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_2_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_3_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_2_chconcat" + top: "mixed_3_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_3_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_conv_conv2d" + top: "mixed_3_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_conv_relu" + type: "ReLU" + bottom: "mixed_3_conv_conv2d_bn" + top: "mixed_3_conv_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_2_chconcat" + top: "mixed_3_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_3_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_conv2d" + top: "mixed_3_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_conv2d_bn" + top: "mixed_3_tower_conv_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_3_tower_conv_conv2d_relu" + top: "mixed_3_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_3_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_1_conv2d" + top: "mixed_3_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_1_conv2d_bn" + top: "mixed_3_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_3_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_3_tower_conv_1_conv2d_relu" + top: "mixed_3_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_3_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_3_tower_conv_2_conv2d" + top: "mixed_3_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_3_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_3_tower_conv_2_conv2d_bn" + top: "mixed_3_tower_conv_2_conv2d_relu" +} +layer { + name: "max_pool_mixed_3_pool" + type: "Pooling" + bottom: "ch_concat_mixed_2_chconcat" + top: "max_pool_mixed_3_pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "ch_concat_mixed_3_chconcat" + type: "Concat" + bottom: "max_pool_mixed_3_pool" + bottom: "mixed_3_conv_conv2d_relu" + bottom: "mixed_3_tower_conv_2_conv2d_relu" + top: "ch_concat_mixed_3_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_4_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_4_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_conv_conv2d" + top: "mixed_4_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_conv_relu" + type: "ReLU" + bottom: "mixed_4_conv_conv2d_bn" + top: "mixed_4_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_4_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_conv2d" + top: "mixed_4_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_conv2d_bn" + top: "mixed_4_tower_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_conv_conv2d_relu" + top: "mixed_4_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_4_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_1_conv2d" + top: "mixed_4_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_1_conv2d_bn" + top: "mixed_4_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_4_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_conv_1_conv2d_relu" + top: "mixed_4_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_4_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_conv_2_conv2d" + top: "mixed_4_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_4_tower_conv_2_conv2d_bn" + top: "mixed_4_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_3_chconcat" + top: "mixed_4_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_4_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_conv2d" + top: "mixed_4_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_conv2d_bn" + top: "mixed_4_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_conv2d_relu" + top: "mixed_4_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_4_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_1_conv2d" + top: "mixed_4_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_1_conv2d_bn" + top: "mixed_4_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_1_conv2d_relu" + top: "mixed_4_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_4_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_2_conv2d" + top: "mixed_4_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_2_conv2d_bn" + top: "mixed_4_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_2_conv2d_relu" + top: "mixed_4_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_4_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_3_conv2d" + top: "mixed_4_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_3_conv2d_bn" + top: "mixed_4_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_4_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_4_tower_1_conv_3_conv2d_relu" + top: "mixed_4_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_4_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_1_conv_4_conv2d" + top: "mixed_4_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_4_tower_1_conv_4_conv2d_bn" + top: "mixed_4_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_4_pool" + type: "Pooling" + bottom: "ch_concat_mixed_3_chconcat" + top: "AVE_pool_mixed_4_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_4_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_4_pool" + top: "mixed_4_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_4_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_4_tower_2_conv_conv2d" + top: "mixed_4_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_4_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_4_tower_2_conv_conv2d_bn" + top: "mixed_4_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_4_chconcat" + type: "Concat" + bottom: "mixed_4_conv_conv2d_relu" + bottom: "mixed_4_tower_conv_2_conv2d_relu" + bottom: "mixed_4_tower_1_conv_4_conv2d_relu" + bottom: "mixed_4_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_4_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_5_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_5_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_conv_conv2d" + top: "mixed_5_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_conv_relu" + type: "ReLU" + bottom: "mixed_5_conv_conv2d_bn" + top: "mixed_5_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_5_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_conv2d" + top: "mixed_5_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_conv2d_bn" + top: "mixed_5_tower_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_conv_conv2d_relu" + top: "mixed_5_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_5_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_1_conv2d" + top: "mixed_5_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_1_conv2d_bn" + top: "mixed_5_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_5_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_conv_1_conv2d_relu" + top: "mixed_5_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_5_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_conv_2_conv2d" + top: "mixed_5_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_5_tower_conv_2_conv2d_bn" + top: "mixed_5_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_4_chconcat" + top: "mixed_5_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_5_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_conv2d" + top: "mixed_5_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_conv2d_bn" + top: "mixed_5_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_conv2d_relu" + top: "mixed_5_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_5_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_1_conv2d" + top: "mixed_5_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_1_conv2d_bn" + top: "mixed_5_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_1_conv2d_relu" + top: "mixed_5_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_5_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_2_conv2d" + top: "mixed_5_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_2_conv2d_bn" + top: "mixed_5_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_2_conv2d_relu" + top: "mixed_5_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_5_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_3_conv2d" + top: "mixed_5_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_3_conv2d_bn" + top: "mixed_5_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_5_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_5_tower_1_conv_3_conv2d_relu" + top: "mixed_5_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_5_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_1_conv_4_conv2d" + top: "mixed_5_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_5_tower_1_conv_4_conv2d_bn" + top: "mixed_5_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_5_pool" + type: "Pooling" + bottom: "ch_concat_mixed_4_chconcat" + top: "AVE_pool_mixed_5_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_5_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_5_pool" + top: "mixed_5_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_5_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_5_tower_2_conv_conv2d" + top: "mixed_5_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_5_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_5_tower_2_conv_conv2d_bn" + top: "mixed_5_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_5_chconcat" + type: "Concat" + bottom: "mixed_5_conv_conv2d_relu" + bottom: "mixed_5_tower_conv_2_conv2d_relu" + bottom: "mixed_5_tower_1_conv_4_conv2d_relu" + bottom: "mixed_5_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_5_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_6_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_6_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_conv_conv2d" + top: "mixed_6_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_conv_relu" + type: "ReLU" + bottom: "mixed_6_conv_conv2d_bn" + top: "mixed_6_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_6_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_conv2d" + top: "mixed_6_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_conv2d_bn" + top: "mixed_6_tower_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_conv_conv2d_relu" + top: "mixed_6_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_6_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_1_conv2d" + top: "mixed_6_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_1_conv2d_bn" + top: "mixed_6_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_6_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_conv_1_conv2d_relu" + top: "mixed_6_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_6_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_conv_2_conv2d" + top: "mixed_6_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_6_tower_conv_2_conv2d_bn" + top: "mixed_6_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_5_chconcat" + top: "mixed_6_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_6_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_conv2d" + top: "mixed_6_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_conv2d_bn" + top: "mixed_6_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_conv2d_relu" + top: "mixed_6_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_6_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_1_conv2d" + top: "mixed_6_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_1_conv2d_bn" + top: "mixed_6_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_1_conv2d_relu" + top: "mixed_6_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_6_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_2_conv2d" + top: "mixed_6_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_2_conv2d_bn" + top: "mixed_6_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_2_conv2d_relu" + top: "mixed_6_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 160 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_6_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_3_conv2d" + top: "mixed_6_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_3_conv2d_bn" + top: "mixed_6_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_6_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_6_tower_1_conv_3_conv2d_relu" + top: "mixed_6_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_6_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_1_conv_4_conv2d" + top: "mixed_6_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_6_tower_1_conv_4_conv2d_bn" + top: "mixed_6_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_6_pool" + type: "Pooling" + bottom: "ch_concat_mixed_5_chconcat" + top: "AVE_pool_mixed_6_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_6_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_6_pool" + top: "mixed_6_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_6_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_6_tower_2_conv_conv2d" + top: "mixed_6_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_6_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_6_tower_2_conv_conv2d_bn" + top: "mixed_6_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_6_chconcat" + type: "Concat" + bottom: "mixed_6_conv_conv2d_relu" + bottom: "mixed_6_tower_conv_2_conv2d_relu" + bottom: "mixed_6_tower_1_conv_4_conv2d_relu" + bottom: "mixed_6_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_6_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_7_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_7_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_conv_conv2d" + top: "mixed_7_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_conv_relu" + type: "ReLU" + bottom: "mixed_7_conv_conv2d_bn" + top: "mixed_7_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_7_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_conv2d" + top: "mixed_7_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_conv2d_bn" + top: "mixed_7_tower_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_conv_conv2d_relu" + top: "mixed_7_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_7_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_1_conv2d" + top: "mixed_7_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_1_conv2d_bn" + top: "mixed_7_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_7_tower_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_conv_1_conv2d_relu" + top: "mixed_7_tower_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_7_tower_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_conv_2_conv2d" + top: "mixed_7_tower_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_conv_2_relu" + type: "ReLU" + bottom: "mixed_7_tower_conv_2_conv2d_bn" + top: "mixed_7_tower_conv_2_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_6_chconcat" + top: "mixed_7_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_7_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_conv2d" + top: "mixed_7_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_conv2d_bn" + top: "mixed_7_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_conv2d_relu" + top: "mixed_7_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_7_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_1_conv2d" + top: "mixed_7_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_1_conv2d_bn" + top: "mixed_7_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_1_conv2d_relu" + top: "mixed_7_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_7_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_2_conv2d" + top: "mixed_7_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_2_conv2d_bn" + top: "mixed_7_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_2_conv2d_relu" + top: "mixed_7_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_7_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_3_conv2d" + top: "mixed_7_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_3_conv2d_bn" + top: "mixed_7_tower_1_conv_3_conv2d_relu" +} +layer { + name: "mixed_7_tower_1_conv_4_conv2d" + type: "Convolution" + bottom: "mixed_7_tower_1_conv_3_conv2d_relu" + top: "mixed_7_tower_1_conv_4_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_7_tower_1_conv_4_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_1_conv_4_conv2d" + top: "mixed_7_tower_1_conv_4_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_1_conv_4_relu" + type: "ReLU" + bottom: "mixed_7_tower_1_conv_4_conv2d_bn" + top: "mixed_7_tower_1_conv_4_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_7_pool" + type: "Pooling" + bottom: "ch_concat_mixed_6_chconcat" + top: "AVE_pool_mixed_7_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_7_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_7_pool" + top: "mixed_7_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_7_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_7_tower_2_conv_conv2d" + top: "mixed_7_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_7_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_7_tower_2_conv_conv2d_bn" + top: "mixed_7_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_7_chconcat" + type: "Concat" + bottom: "mixed_7_conv_conv2d_relu" + bottom: "mixed_7_tower_conv_2_conv2d_relu" + bottom: "mixed_7_tower_1_conv_4_conv2d_relu" + bottom: "mixed_7_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_7_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_8_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_7_chconcat" + top: "mixed_8_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_8_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_conv_conv2d" + top: "mixed_8_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_conv_relu" + type: "ReLU" + bottom: "mixed_8_tower_conv_conv2d_bn" + top: "mixed_8_tower_conv_conv2d_relu" +} +layer { + name: "mixed_8_tower_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_conv_conv2d_relu" + top: "mixed_8_tower_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_8_tower_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_conv_1_conv2d" + top: "mixed_8_tower_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_conv_1_relu" + type: "ReLU" + bottom: "mixed_8_tower_conv_1_conv2d_bn" + top: "mixed_8_tower_conv_1_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_7_chconcat" + top: "mixed_8_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_8_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_conv2d" + top: "mixed_8_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_conv2d_bn" + top: "mixed_8_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_conv2d_relu" + top: "mixed_8_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 3 + kernel_h: 1 + kernel_w: 7 + } +} +layer { + name: "mixed_8_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_1_conv2d" + top: "mixed_8_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_1_conv2d_bn" + top: "mixed_8_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_2_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_1_conv2d_relu" + top: "mixed_8_tower_1_conv_2_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 3 + pad_w: 0 + kernel_h: 7 + kernel_w: 1 + } +} +layer { + name: "mixed_8_tower_1_conv_2_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_2_conv2d" + top: "mixed_8_tower_1_conv_2_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_2_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_2_conv2d_bn" + top: "mixed_8_tower_1_conv_2_conv2d_relu" +} +layer { + name: "mixed_8_tower_1_conv_3_conv2d" + type: "Convolution" + bottom: "mixed_8_tower_1_conv_2_conv2d_relu" + top: "mixed_8_tower_1_conv_3_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 3 + stride: 2 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_8_tower_1_conv_3_batchnorm" + type: "BatchNorm" + bottom: "mixed_8_tower_1_conv_3_conv2d" + top: "mixed_8_tower_1_conv_3_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_8_tower_1_conv_3_relu" + type: "ReLU" + bottom: "mixed_8_tower_1_conv_3_conv2d_bn" + top: "mixed_8_tower_1_conv_3_conv2d_relu" +} +layer { + name: "MAX_pool_mixed_8_pool" + type: "Pooling" + bottom: "ch_concat_mixed_7_chconcat" + top: "MAX_pool_mixed_8_pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "ch_concat_mixed_8_chconcat" + type: "Concat" + bottom: "mixed_8_tower_conv_1_conv2d_relu" + bottom: "mixed_8_tower_1_conv_3_conv2d_relu" + bottom: "MAX_pool_mixed_8_pool" + top: "ch_concat_mixed_8_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_9_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + kernel_h: 1 + kernel_w: 1 + } +} +layer { + name: "mixed_9_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_conv_conv2d" + top: "mixed_9_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_conv_relu" + type: "ReLU" + bottom: "mixed_9_conv_conv2d_bn" + top: "mixed_9_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_9_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_conv_conv2d" + top: "mixed_9_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_conv_conv2d_bn" + top: "mixed_9_tower_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_conv_conv2d_relu" + top: "mixed_9_tower_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } +} +layer { + name: "mixed_9_tower_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_mixed_conv_conv2d" + top: "mixed_9_tower_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_mixed_conv_conv2d_bn" + top: "mixed_9_tower_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_conv_conv2d_relu" + top: "mixed_9_tower_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } +} +layer { + name: "mixed_9_tower_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_mixed_conv_1_conv2d" + top: "mixed_9_tower_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_mixed_conv_1_conv2d_bn" + top: "mixed_9_tower_mixed_conv_1_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_8_chconcat" + top: "mixed_9_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 448 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_9_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_conv_conv2d" + top: "mixed_9_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_conv_conv2d_bn" + top: "mixed_9_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_conv2d_relu" + top: "mixed_9_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_9_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_conv_1_conv2d" + top: "mixed_9_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_conv_1_conv2d_bn" + top: "mixed_9_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_1_conv2d_relu" + top: "mixed_9_tower_1_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_mixed_conv_conv2d" + top: "mixed_9_tower_1_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_mixed_conv_conv2d_bn" + top: "mixed_9_tower_1_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_9_tower_1_conv_1_conv2d_relu" + top: "mixed_9_tower_1_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d" + top: "mixed_9_tower_1_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_1_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d_bn" + top: "mixed_9_tower_1_mixed_conv_1_conv2d_relu" +} +layer { + name: "AVE_pool_mixed_9_pool" + type: "Pooling" + bottom: "ch_concat_mixed_8_chconcat" + top: "AVE_pool_mixed_9_pool" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_9_tower_2_conv_conv2d" + type: "Convolution" + bottom: "AVE_pool_mixed_9_pool" + top: "mixed_9_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_9_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_9_tower_2_conv_conv2d" + top: "mixed_9_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_9_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_9_tower_2_conv_conv2d_bn" + top: "mixed_9_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_9_chconcat" + type: "Concat" + bottom: "mixed_9_conv_conv2d_relu" + bottom: "mixed_9_tower_mixed_conv_conv2d_relu" + bottom: "mixed_9_tower_mixed_conv_1_conv2d_relu" + bottom: "mixed_9_tower_1_mixed_conv_conv2d_relu" + bottom: "mixed_9_tower_1_mixed_conv_1_conv2d_relu" + bottom: "mixed_9_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_9_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "mixed_10_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 320 + bias_term: false + pad: 0 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + kernel_h: 1 + kernel_w: 1 + } +} +layer { + name: "mixed_10_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_conv_conv2d" + top: "mixed_10_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_conv_relu" + type: "ReLU" + bottom: "mixed_10_conv_conv2d_bn" + top: "mixed_10_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_tower_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_10_tower_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_conv_conv2d" + top: "mixed_10_tower_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_conv_conv2d_bn" + top: "mixed_10_tower_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_conv_conv2d_relu" + top: "mixed_10_tower_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } +} +layer { + name: "mixed_10_tower_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_mixed_conv_conv2d" + top: "mixed_10_tower_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_mixed_conv_conv2d_bn" + top: "mixed_10_tower_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_conv_conv2d_relu" + top: "mixed_10_tower_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } +} +layer { + name: "mixed_10_tower_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_mixed_conv_1_conv2d" + top: "mixed_10_tower_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_mixed_conv_1_conv2d_bn" + top: "mixed_10_tower_mixed_conv_1_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_conv_conv2d" + type: "Convolution" + bottom: "ch_concat_mixed_9_chconcat" + top: "mixed_10_tower_1_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 448 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_10_tower_1_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_conv_conv2d" + top: "mixed_10_tower_1_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_conv_conv2d_bn" + top: "mixed_10_tower_1_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_conv2d_relu" + top: "mixed_10_tower_1_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + pad: 1 + kernel_size: 3 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_10_tower_1_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_conv_1_conv2d" + top: "mixed_10_tower_1_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_conv_1_conv2d_bn" + top: "mixed_10_tower_1_conv_1_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_mixed_conv_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_1_conv2d_relu" + top: "mixed_10_tower_1_mixed_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 0 + pad_w: 1 + kernel_h: 1 + kernel_w: 3 + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_mixed_conv_conv2d" + top: "mixed_10_tower_1_mixed_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_mixed_conv_conv2d_bn" + top: "mixed_10_tower_1_mixed_conv_conv2d_relu" +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_conv2d" + type: "Convolution" + bottom: "mixed_10_tower_1_conv_1_conv2d_relu" + top: "mixed_10_tower_1_mixed_conv_1_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + pad_h: 1 + pad_w: 0 + kernel_h: 3 + kernel_w: 1 + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d" + top: "mixed_10_tower_1_mixed_conv_1_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_1_mixed_conv_1_relu" + type: "ReLU" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d_bn" + top: "mixed_10_tower_1_mixed_conv_1_conv2d_relu" +} +layer { + name: "MAX_pool_mixed_10_pool" + type: "Pooling" + bottom: "ch_concat_mixed_9_chconcat" + top: "MAX_pool_mixed_10_pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 1 + pad: 1 + } +} +layer { + name: "mixed_10_tower_2_conv_conv2d" + type: "Convolution" + bottom: "MAX_pool_mixed_10_pool" + top: "mixed_10_tower_2_conv_conv2d" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + pad: 0 + kernel_size: 1 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + } +} +layer { + name: "mixed_10_tower_2_conv_batchnorm" + type: "BatchNorm" + bottom: "mixed_10_tower_2_conv_conv2d" + top: "mixed_10_tower_2_conv_conv2d_bn" + batch_norm_param { + } +} +layer { + name: "mixed_10_tower_2_conv_relu" + type: "ReLU" + bottom: "mixed_10_tower_2_conv_conv2d_bn" + top: "mixed_10_tower_2_conv_conv2d_relu" +} +layer { + name: "ch_concat_mixed_10_chconcat" + type: "Concat" + bottom: "mixed_10_conv_conv2d_relu" + bottom: "mixed_10_tower_mixed_conv_conv2d_relu" + bottom: "mixed_10_tower_mixed_conv_1_conv2d_relu" + bottom: "mixed_10_tower_1_mixed_conv_conv2d_relu" + bottom: "mixed_10_tower_1_mixed_conv_1_conv2d_relu" + bottom: "mixed_10_tower_2_conv_conv2d_relu" + top: "ch_concat_mixed_10_chconcat" + concat_param { + axis: 1 + } +} +layer { + name: "global_pool" + type: "Pooling" + bottom: "ch_concat_mixed_10_chconcat" + top: "global_pool" + pooling_param { + pool: AVE + kernel_size: 8 + stride: 1 + pad: 0 + } +} +layer { + name: "drop" + type: "Dropout" + bottom: "global_pool" + top: "global_pool" + dropout_param { + dropout_ratio: 0.8 + } +} +layer { + name: "flatten" + type: "Flatten" + bottom: "global_pool" + top: "flatten" +} +layer { + name: "fc1" + type: "InnerProduct" + bottom: "flatten" + top: "fc1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 1000 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.0 + } + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc1" + bottom: "label" + top: "loss" +} +layer { + name: "acc/top-1" + type: "Accuracy" + bottom: "fc1" + bottom: "label" + top: "acc/top-1" + include { + phase: TEST + } +} +layer { + name: "acc/top-5" + type: "Accuracy" + bottom: "fc1" + bottom: "label" + top: "acc/top-5" + include { + phase: TEST + } + accuracy_param { + top_k: 5 + } +} diff --git a/models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/solver.prototxt b/models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/solver.prototxt deleted file mode 100644 index 2356cc00f..000000000 --- a/models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/solver.prototxt +++ /dev/null @@ -1,19 +0,0 @@ -net: "models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/train_val.prototxt" -test_iter: 1000 -test_interval: 625 -test_initialization: false -display: 40 -base_lr: 0.8 -lr_policy: "multistep" -stepvalue:18750 -stepvalue:37500 -stepvalue:50000 -gamma: 0.1 -max_iter: 56300 -warmup_iter: 3125 # 1281167 / 2048 * 5 epochs -warmup_start_lr: 0.1 -momentum: 0.9 -weight_decay: 0.0001 -snapshot: 6250 -snapshot_prefix: "models/intel_optimized_models/multinode/resnet_50_16_nodes_2k_batch/resnet_50_16_nodes_2k" -solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/solver.prototxt b/models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/solver.prototxt deleted file mode 100644 index 8f03f6a3a..000000000 --- a/models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/solver.prototxt +++ /dev/null @@ -1,19 +0,0 @@ -net: "models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/train_val.prototxt" -test_iter: 1000 -test_interval: 156 -test_initialization: false -display: 40 -base_lr: 3.2 -lr_policy: "multistep" -stepvalue:4680 -stepvalue:9360 -stepvalue:12480 -gamma: 0.1 -max_iter: 14075 -warmup_iter: 780 # 1281167 / 8192 * 5 epochs -warmup_start_lr: 0.1 -momentum: 0.9 -weight_decay: 0.0001 -snapshot: 156 -snapshot_prefix: "models/intel_optimized_models/multinode/resnet_50_256_nodes_8k_batch/resnet_50_256_nodes_8k" -solver_mode: CPU diff --git a/models/intel_optimized_models/multinode/resnet_50_8_nodes/solver.prototxt b/models/intel_optimized_models/multinode/resnet_50_8_nodes/solver.prototxt deleted file mode 100644 index 182626503..000000000 --- a/models/intel_optimized_models/multinode/resnet_50_8_nodes/solver.prototxt +++ /dev/null @@ -1,17 +0,0 @@ -net: "models/intel_optimized_models/multinode/resnet_50_8_nodes/train_val.prototxt" -test_iter: 1000 -test_interval: 1248 -test_initialization: false -display: 40 -base_lr: 0.4 -lr_policy: "multistep" -stepvalue:37440 -stepvalue:74880 -stepvalue:99840 -gamma: 0.1 -max_iter: 112600 -momentum: 0.9 -weight_decay: 0.0001 -snapshot: 12480 -snapshot_prefix: "models/intel_optimized_models/multinode/resnet_50_8_nodes/resnet_50_8_nodes" -solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/bdw/solver_dummydata.prototxt b/models/intel_optimized_models/resnet_50/bdw/solver_dummydata.prototxt deleted file mode 100644 index 07c4dac00..000000000 --- a/models/intel_optimized_models/resnet_50/bdw/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/resnet_50/bdw/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/resnet_50/bdw/resnet_50_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/bdw/train_val_dummydata.prototxt b/models/intel_optimized_models/resnet_50/bdw/train_val_dummydata.prototxt deleted file mode 100644 index ba298f468..000000000 --- a/models/intel_optimized_models/resnet_50/bdw/train_val_dummydata.prototxt +++ /dev/null @@ -1,3051 +0,0 @@ -name: "ResNet-50" -layer { - name: "data" - type: "DummyData" - top: "data" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 32 dim: 3 dim: 224 dim: 224 } - data_filler { - type: "constant" - value: 0.01 - } - } -} -layer { - name: "data" - type: "DummyData" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 32 } - data_filler { - type: "constant" - } - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "prob" - name: "prob" - type: "SoftmaxWithLoss" - include { - phase: TRAIN - } -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/resnet_50/knl/solver_dummydata.prototxt b/models/intel_optimized_models/resnet_50/knl/solver_dummydata.prototxt deleted file mode 100644 index 4dd554e8c..000000000 --- a/models/intel_optimized_models/resnet_50/knl/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/resnet_50/knl/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/resnet_50/knl/resnet_50_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/knl/train_val_dummydata.prototxt b/models/intel_optimized_models/resnet_50/knl/train_val_dummydata.prototxt deleted file mode 100644 index 00c35771f..000000000 --- a/models/intel_optimized_models/resnet_50/knl/train_val_dummydata.prototxt +++ /dev/null @@ -1,3051 +0,0 @@ -name: "ResNet-50" -layer { - name: "data" - type: "DummyData" - top: "data" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 dim: 3 dim: 224 dim: 224 } - data_filler { - type: "constant" - value: 0.01 - } - } -} -layer { - name: "data" - type: "DummyData" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 } - data_filler { - type: "constant" - } - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "prob" - name: "prob" - type: "SoftmaxWithLoss" - include { - phase: TRAIN - } -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/resnet_50/knm/solver_dummydata.prototxt b/models/intel_optimized_models/resnet_50/knm/solver_dummydata.prototxt deleted file mode 100644 index 3d241ead2..000000000 --- a/models/intel_optimized_models/resnet_50/knm/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/resnet_50/knm/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/resnet_50/knm/resnet_50_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/knm/train_val_dummydata.prototxt b/models/intel_optimized_models/resnet_50/knm/train_val_dummydata.prototxt deleted file mode 100644 index 00c35771f..000000000 --- a/models/intel_optimized_models/resnet_50/knm/train_val_dummydata.prototxt +++ /dev/null @@ -1,3051 +0,0 @@ -name: "ResNet-50" -layer { - name: "data" - type: "DummyData" - top: "data" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 dim: 3 dim: 224 dim: 224 } - data_filler { - type: "constant" - value: 0.01 - } - } -} -layer { - name: "data" - type: "DummyData" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 } - data_filler { - type: "constant" - } - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "prob" - name: "prob" - type: "SoftmaxWithLoss" - include { - phase: TRAIN - } -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/resnet_50/skx/solver_dummydata.prototxt b/models/intel_optimized_models/resnet_50/skx/solver_dummydata.prototxt deleted file mode 100644 index e3e78b51d..000000000 --- a/models/intel_optimized_models/resnet_50/skx/solver_dummydata.prototxt +++ /dev/null @@ -1,25 +0,0 @@ -#This is Intel(R) optimized (in terms of time to train) version of solver for model described in the [AlexNet](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) publication. -#Original solver.prototxt can be found in /models/bvlc_alexnet/ directory of this repository. -#Differences: -#- lr_policy is set to poly instead of step -#- base_lr is decreased to 0.007 -#- max_iter is decreased to 250000 -#- power is set to 0.6 -# -#Top-5 and Top-1 results achieved with this version of solver: -#Top-5: 80.4% -#Top-1: 57.4% -#Training was performed using server equipped with Intel(R) Xeon Phi(TM) CPU 7250 processor. -net: "models/intel_optimized_models/resnet_50/skx/train_val_dummydata.prototxt" -test_iter: 1000 -test_interval: 10000 -base_lr: 0.007 -lr_policy: "poly" -power: 0.6 -display: 1 -max_iter: 5000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 50000 -snapshot_prefix: "models/intel_optimized_models/resnet_50/skx/resnet_50_train" -solver_mode: CPU diff --git a/models/intel_optimized_models/resnet_50/skx/train_val_dummydata.prototxt b/models/intel_optimized_models/resnet_50/skx/train_val_dummydata.prototxt deleted file mode 100644 index 00c35771f..000000000 --- a/models/intel_optimized_models/resnet_50/skx/train_val_dummydata.prototxt +++ /dev/null @@ -1,3051 +0,0 @@ -name: "ResNet-50" -layer { - name: "data" - type: "DummyData" - top: "data" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 dim: 3 dim: 224 dim: 224 } - data_filler { - type: "constant" - value: 0.01 - } - } -} -layer { - name: "data" - type: "DummyData" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - shape: { dim: 64 } - data_filler { - type: "constant" - } - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "prob" - name: "prob" - type: "SoftmaxWithLoss" - include { - phase: TRAIN - } -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/resnet_50/train_val.prototxt b/models/intel_optimized_models/resnet_50/train_val.prototxt deleted file mode 100644 index 75bff6269..000000000 --- a/models/intel_optimized_models/resnet_50/train_val.prototxt +++ /dev/null @@ -1,3322 +0,0 @@ -name: "ResNet-50" -bn_stats_batch_size: 32 -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TRAIN - } - transform_param { - mirror: true - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_aspect_ratio_param { - min_area_ratio: 0.08 - max_area_ratio: 1 - aspect_ratio_change: 0.75 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_train_lmdb" - batch_size: 128 - backend: LMDB - prefetch: 2 - shuffle: true - } -} -layer { - name: "data" - type: "Data" - top: "data" - top: "label" - include { - phase: TEST - } - transform_param { - mirror: false - crop_size: 224 - scale: 0.0078125 - mean_value: 104 - mean_value: 117 - mean_value: 123 - random_resize_param { - min_size: 256 - max_size: 256 - resize_param { - interp_mode: CUBIC - } - } - } - data_param { - source: "examples/imagenet/ilsvrc12_val_lmdb" - batch_size: 50 - backend: LMDB - } -} - -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "msra" - variance_norm: FAN_OUT - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c" - top: "res3a_branch2a" - name: "res3a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 2 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 1 } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "msra" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - param { lr_mult: 0 } - param { lr_mult: 0 } - param { lr_mult: 0 } - batch_norm_param { - moving_average_fraction: 0.9 - filler { value: 0 } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - param { decay_mult: 0 } - param { decay_mult: 0 } - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "loss" - name: "prob" - type: "SoftmaxWithLoss" -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/resnet_50/train_val_dummydata.prototxt b/models/intel_optimized_models/resnet_50/train_val_dummydata.prototxt deleted file mode 100644 index 15301d2b5..000000000 --- a/models/intel_optimized_models/resnet_50/train_val_dummydata.prototxt +++ /dev/null @@ -1,3055 +0,0 @@ -name: "ResNet-50" -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TRAIN - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 32 dim: 3 dim: 224 dim: 224 } - shape: { dim: 32 dim: 1 dim: 1 dim: 1 } - } -} -layer { - name: "data" - type: "DummyData" - top: "data" - top: "label" - include { - phase: TEST - } - dummy_data_param { - data_filler { - type: "constant" - value: 0.01 - } - shape: { dim: 32 dim: 3 dim: 224 dim: 224 } - shape: { dim: 32 dim: 1 dim: 1 dim: 1 } - } -} -layer { - bottom: "data" - top: "conv1" - name: "conv1" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 7 - pad: 3 - stride: 2 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "bn_conv1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "scale_conv1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "conv1" - top: "conv1" - name: "conv1_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "conv1" - top: "pool1" - name: "pool1" - type: "Pooling" - pooling_param { - - kernel_size: 3 - stride: 2 - pool: MAX - } -} - -layer { - bottom: "pool1" - top: "res2a_branch1" - name: "res2a_branch1" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "bn2a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch1" - top: "res2a_branch1" - name: "scale2a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "bn2a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "scale2a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2a" - name: "res2a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2a_branch2a" - top: "res2a_branch2b" - name: "res2a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "bn2a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "scale2a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch2b" - top: "res2a_branch2b" - name: "res2a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "bn2a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2a_branch2c" - top: "res2a_branch2c" - name: "scale2a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a_branch1" - bottom: "res2a_branch2c" - top: "res2a" - name: "res2a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2a" - top: "res2a" - name: "res2a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "bn2b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "scale2b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2a" - name: "res2b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2b_branch2a" - top: "res2b_branch2b" - name: "res2b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "bn2b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "scale2b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b_branch2b" - top: "res2b_branch2b" - name: "res2b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "bn2b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2b_branch2c" - top: "res2b_branch2c" - name: "scale2b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2a" - bottom: "res2b_branch2c" - top: "res2b" - name: "res2b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2b" - top: "res2b" - name: "res2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "bn2c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "scale2c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2a" - name: "res2c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res2c_branch2a" - top: "res2c_branch2b" - name: "res2c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 64 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "bn2c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "scale2c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2c_branch2b" - top: "res2c_branch2b" - name: "res2c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "bn2c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res2c_branch2c" - top: "res2c_branch2c" - name: "scale2c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res2b" - bottom: "res2c_branch2c" - top: "res2c" - name: "res2c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res2c" - top: "res2c" - name: "res2c_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "bn3a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch1" - top: "res3a_branch1" - name: "scale3a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "bn3a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "scale3a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2a" - name: "res3a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a_branch2a" - top: "res3a_branch2b" - name: "res3a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "bn3a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "scale3a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch2b" - top: "res3a_branch2b" - name: "res3a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "bn3a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3a_branch2c" - top: "res3a_branch2c" - name: "scale3a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a_branch1" - bottom: "res3a_branch2c" - top: "res3a" - name: "res3a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3a" - top: "res3a" - name: "res3a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3a" - top: "res3b_branch2a" - name: "res3b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "bn3b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "scale3b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2a" - name: "res3b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2a" - top: "res3b_branch2b" - name: "res3b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "bn3b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "scale3b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2b" - name: "res3b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b_branch2b" - top: "res3b_branch2c" - name: "res3b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "bn3b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3b_branch2c" - top: "res3b_branch2c" - name: "scale3b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3a" - bottom: "res3b_branch2c" - top: "res3b" - name: "res3b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3b" - top: "res3b" - name: "res3b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3b" - top: "res3c_branch2a" - name: "res3c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "bn3c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "scale3c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2a" - name: "res3c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2a" - top: "res3c_branch2b" - name: "res3c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "bn3c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "scale3c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2b" - name: "res3c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c_branch2b" - top: "res3c_branch2c" - name: "res3c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "bn3c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3c_branch2c" - top: "res3c_branch2c" - name: "scale3c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3b" - bottom: "res3c_branch2c" - top: "res3c" - name: "res3c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3c" - top: "res3c" - name: "res3c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3c" - top: "res3d_branch2a" - name: "res3d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "bn3d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "scale3d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2a" - name: "res3d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2a" - top: "res3d_branch2b" - name: "res3d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 128 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "bn3d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "scale3d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2b" - name: "res3d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d_branch2b" - top: "res3d_branch2c" - name: "res3d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "bn3d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res3d_branch2c" - top: "res3d_branch2c" - name: "scale3d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3c" - bottom: "res3d_branch2c" - top: "res3d" - name: "res3d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res3d" - top: "res3d" - name: "res3d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res3d" - top: "res4a_branch1" - name: "res4a_branch1" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "bn4a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch1" - top: "res4a_branch1" - name: "scale4a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res3d" - top: "res4a_branch2a" - name: "res4a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "bn4a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "scale4a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2a" - name: "res4a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a_branch2a" - top: "res4a_branch2b" - name: "res4a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "bn4a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "scale4a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch2b" - top: "res4a_branch2b" - name: "res4a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "bn4a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4a_branch2c" - top: "res4a_branch2c" - name: "scale4a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a_branch1" - bottom: "res4a_branch2c" - top: "res4a" - name: "res4a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4a" - top: "res4a" - name: "res4a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4a" - top: "res4b_branch2a" - name: "res4b_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "bn4b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "scale4b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2a" - name: "res4b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2a" - top: "res4b_branch2b" - name: "res4b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "bn4b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "scale4b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2b" - name: "res4b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b_branch2b" - top: "res4b_branch2c" - name: "res4b_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "bn4b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4b_branch2c" - top: "res4b_branch2c" - name: "scale4b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4a" - bottom: "res4b_branch2c" - top: "res4b" - name: "res4b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4b" - top: "res4b" - name: "res4b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4b" - top: "res4c_branch2a" - name: "res4c_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "bn4c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "scale4c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2a" - name: "res4c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2a" - top: "res4c_branch2b" - name: "res4c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "bn4c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "scale4c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2b" - name: "res4c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c_branch2b" - top: "res4c_branch2c" - name: "res4c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "bn4c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4c_branch2c" - top: "res4c_branch2c" - name: "scale4c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4b" - bottom: "res4c_branch2c" - top: "res4c" - name: "res4c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4c" - top: "res4c" - name: "res4c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4c" - top: "res4d_branch2a" - name: "res4d_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "bn4d_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "scale4d_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2a" - name: "res4d_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2a" - top: "res4d_branch2b" - name: "res4d_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "bn4d_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "scale4d_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2b" - name: "res4d_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d_branch2b" - top: "res4d_branch2c" - name: "res4d_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "bn4d_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4d_branch2c" - top: "res4d_branch2c" - name: "scale4d_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4c" - bottom: "res4d_branch2c" - top: "res4d" - name: "res4d" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4d" - top: "res4d" - name: "res4d_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4d" - top: "res4e_branch2a" - name: "res4e_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "bn4e_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "scale4e_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2a" - name: "res4e_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2a" - top: "res4e_branch2b" - name: "res4e_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "bn4e_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "scale4e_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2b" - name: "res4e_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e_branch2b" - top: "res4e_branch2c" - name: "res4e_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "bn4e_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4e_branch2c" - top: "res4e_branch2c" - name: "scale4e_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4d" - bottom: "res4e_branch2c" - top: "res4e" - name: "res4e" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4e" - top: "res4e" - name: "res4e_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4e" - top: "res4f_branch2a" - name: "res4f_branch2a" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "bn4f_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "scale4f_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2a" - name: "res4f_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2a" - top: "res4f_branch2b" - name: "res4f_branch2b" - type: "Convolution" - convolution_param { - - num_output: 256 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "bn4f_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "scale4f_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2b" - name: "res4f_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f_branch2b" - top: "res4f_branch2c" - name: "res4f_branch2c" - type: "Convolution" - convolution_param { - - num_output: 1024 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "bn4f_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res4f_branch2c" - top: "res4f_branch2c" - name: "scale4f_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4e" - bottom: "res4f_branch2c" - top: "res4f" - name: "res4f" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res4f" - top: "res4f" - name: "res4f_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res4f" - top: "res5a_branch1" - name: "res5a_branch1" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "bn5a_branch1" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch1" - top: "res5a_branch1" - name: "scale5a_branch1" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res4f" - top: "res5a_branch2a" - name: "res5a_branch2a" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 1 - pad: 0 - stride: 2 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "bn5a_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "scale5a_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2a" - name: "res5a_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5a_branch2a" - top: "res5a_branch2b" - name: "res5a_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "bn5a_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "scale5a_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch2b" - top: "res5a_branch2b" - name: "res5a_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "bn5a_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5a_branch2c" - top: "res5a_branch2c" - name: "scale5a_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a_branch1" - bottom: "res5a_branch2c" - top: "res5a" - name: "res5a" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5a" - top: "res5a" - name: "res5a_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "bn5b_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "scale5b_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2a" - name: "res5b_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5b_branch2a" - top: "res5b_branch2b" - name: "res5b_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "bn5b_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "scale5b_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b_branch2b" - top: "res5b_branch2b" - name: "res5b_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "bn5b_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5b_branch2c" - top: "res5b_branch2c" - name: "scale5b_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5a" - bottom: "res5b_branch2c" - top: "res5b" - name: "res5b" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5b" - top: "res5b" - name: "res5b_relu" - type: "ReLU" - relu_param { - - } -} - -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 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "bn5c_branch2a" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "scale5c_branch2a" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2a" - name: "res5c_branch2a_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2a" - top: "res5c_branch2b" - name: "res5c_branch2b" - type: "Convolution" - convolution_param { - - num_output: 512 - kernel_size: 3 - pad: 1 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "bn5c_branch2b" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "scale5c_branch2b" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2b" - name: "res5c_branch2b_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c_branch2b" - top: "res5c_branch2c" - name: "res5c_branch2c" - type: "Convolution" - convolution_param { - - num_output: 2048 - kernel_size: 1 - pad: 0 - stride: 1 - bias_term: false - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "bn5c_branch2c" - type: "BatchNorm" - batch_norm_param { - - - } -} - -layer { - bottom: "res5c_branch2c" - top: "res5c_branch2c" - name: "scale5c_branch2c" - type: "Scale" - scale_param { - bias_term: true - } -} - -layer { - bottom: "res5b" - bottom: "res5c_branch2c" - top: "res5c" - name: "res5c" - type: "Eltwise" - eltwise_param { - - } -} - -layer { - bottom: "res5c" - top: "res5c" - name: "res5c_relu" - type: "ReLU" - relu_param { - - } -} - -layer { - bottom: "res5c" - top: "pool5" - name: "pool5" - type: "Pooling" - pooling_param { - - kernel_size: 7 - stride: 1 - pool: AVE - } -} - -layer { - bottom: "pool5" - top: "fc1000" - name: "fc1000" - type: "InnerProduct" - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} - -layer { - bottom: "fc1000" - bottom: "label" - top: "prob" - name: "prob" - type: "SoftmaxWithLoss" - include { - phase: TRAIN - } -} -layer { - name: "loss3/top-1" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-1" - include { - phase: TEST - } -} -layer { - name: "loss3/top-5" - type: "Accuracy" - bottom: "fc1000" - bottom: "label" - top: "loss3/top-5" - include { - phase: TEST - } - accuracy_param { - top_k: 5 - } -} diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt new file mode 100644 index 000000000..f7c725d42 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt @@ -0,0 +1,7098 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "rois" +input_shape { + dim: 1 # to be changed on-the-fly to num ROIs + dim: 5 # [batch ind, x1, y1, x2, y2] zero-based indexing +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 3969 #81*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 81 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 81 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt new file mode 100644 index 000000000..aefca1ac0 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt @@ -0,0 +1,6352 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +#-----------------------layer +------------------------- + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#-----------------------output------------------------ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 24 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver360k480k.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver360k480k.pt new file mode 100644 index 000000000..664f1625c --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver360k480k.pt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 360000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt new file mode 100644 index 000000000..2a6d1e6d2 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt @@ -0,0 +1,7178 @@ +name: "ResNet-101" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 3969 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 81 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver360k480k.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver360k480k.pt new file mode 100644 index 000000000..c4fc9e495 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver360k480k.pt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 360000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt new file mode 100644 index 000000000..00f2aae50 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver360k480k.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver360k480k.pt new file mode 100644 index 000000000..6ec710a50 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver360k480k.pt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 360000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt new file mode 100644 index 000000000..2a6d1e6d2 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt @@ -0,0 +1,7178 @@ +name: "ResNet-101" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 3969 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 81 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver360k480k.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver360k480k.pt new file mode 100644 index 000000000..b36b43941 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver360k480k.pt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 360000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt new file mode 100644 index 000000000..8ae6e340c --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver360k480k.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver360k480k.pt new file mode 100644 index 000000000..0af95b51e --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver360k480k.pt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 360000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt new file mode 100644 index 000000000..8ae6e340c --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver.prototxt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver.prototxt new file mode 100644 index 000000000..488ce6ef5 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver.prototxt @@ -0,0 +1,15 @@ +train_net: "models/coco/ResNet-101/rfcn_end2end/train_agnostic.prototxt" +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 640000 +display: 100 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn" +# debug_info: true diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver_ohem.prototxt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver_ohem.prototxt new file mode 100644 index 000000000..392fdd5c9 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/solver_ohem.prototxt @@ -0,0 +1,16 @@ +train_net: "models/coco/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt" +base_lr: 0.0005 +lr_policy: "step" +gamma: 0.1 +stepsize: 1280000 +display: 100 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +average_loss: 100 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +# debug_info: true diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/test_agnostic.prototxt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/test_agnostic.prototxt new file mode 100644 index 000000000..10418c86d --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/test_agnostic.prototxt @@ -0,0 +1,7186 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 24 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 3969 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 81 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 81 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic.prototxt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic.prototxt new file mode 100644 index 000000000..1d26dda92 --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic.prototxt @@ -0,0 +1,7273 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 24 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + top: "loss_cls" + loss_weight: 1 + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels" + top: "accuarcy" + #include: { phase: TEST } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: 'bbox_inside_weights' + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" +} + diff --git a/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt new file mode 100644 index 000000000..bd2d38a5b --- /dev/null +++ b/models/intel_optimized_models/rfcn/coco/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt @@ -0,0 +1,7343 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 81" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 24 # 2(bg/fg) * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 48 # 4 * 12(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 24 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16 \n'scales': !!python/tuple [4, 8, 16, 32]" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 3969 #81*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 81 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt new file mode 100644 index 000000000..03da0126f --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rfcn_test.pt @@ -0,0 +1,7098 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "rois" +input_shape { + dim: 1 # to be changed on-the-fly to num ROIs + dim: 5 # [batch ind, x1, y1, x2, y2] zero-based indexing +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt new file mode 100644 index 000000000..57d3e7095 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/rpn_test.pt @@ -0,0 +1,6352 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +#-----------------------layer +------------------------- + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#-----------------------output------------------------ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt new file mode 100644 index 000000000..e3bd7cb28 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt new file mode 100644 index 000000000..48d1492dd --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt @@ -0,0 +1,7178 @@ +name: "ResNet-101" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt new file mode 100644 index 000000000..51d772dcf --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt new file mode 100644 index 000000000..d839e6173 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt new file mode 100644 index 000000000..4b6729648 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt new file mode 100644 index 000000000..48d1492dd --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt @@ -0,0 +1,7178 @@ +name: "ResNet-101" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt new file mode 100644 index 000000000..8931c0081 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt new file mode 100644 index 000000000..e6273c9ae --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt new file mode 100644 index 000000000..2a1e48c7b --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt new file mode 100644 index 000000000..e6273c9ae --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt @@ -0,0 +1,6364 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/test.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/test.prototxt new file mode 100644 index 000000000..076dd0260 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/test.prototxt @@ -0,0 +1,7186 @@ +name: "ResNet101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res5c" + top: "rpn/output" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 4116 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 84 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 84 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/train_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/train_ohem.prototxt new file mode 100644 index 000000000..ae3ce444e --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/class-aware/train_ohem.prototxt @@ -0,0 +1,7343 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res5c" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 4116 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 84 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver.prototxt new file mode 100644 index 000000000..4ad5d37db --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver.prototxt @@ -0,0 +1,18 @@ +train_net: "../../models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic.prototxt" +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 1 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn" +iter_size: 2 +# debug_info: true +solver_mode: CPU +# time_info: true diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver_ohem.prototxt new file mode 100644 index 000000000..87b511867 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/solver_ohem.prototxt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt" +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet101_rfcn_ohem" +iter_size: 2 +# debug_info: true diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/test_agnostic.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/test_agnostic.prototxt new file mode 100644 index 000000000..216353108 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/test_agnostic.prototxt @@ -0,0 +1,7186 @@ +name: "ResNet-101" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic.prototxt new file mode 100644 index 000000000..ebc0ab814 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic.prototxt @@ -0,0 +1,7277 @@ +name: "ResNet-101" +# time_info: true + +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + engine: "CAFFE" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + top: "loss_cls" + loss_weight: 1 + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels" + top: "accuarcy" + #include: { phase: TEST } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: 'bbox_inside_weights' + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt new file mode 100644 index 000000000..a6847c447 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-101/rfcn_end2end/train_agnostic_ohem.prototxt @@ -0,0 +1,7344 @@ +name: "ResNet-101" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "conv1" + bottom: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2a_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2b_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res2c_branch2b" + bottom: "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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "bn3b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2a" + top: "res3b1_branch2a" + name: "scale3b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "bn3b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2b" + top: "res3b1_branch2b" + name: "scale3b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "bn3b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b1_branch2c" + top: "res3b1_branch2c" + name: "scale3b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "bn3b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2a" + name: "scale3b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2a" + bottom: "res3b2_branch2a" + name: "res3b2_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b2_branch2a" + top: "res3b2_branch2b" + name: "res3b2_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "bn3b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2b" + top: "res3b2_branch2b" + name: "scale3b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "bn3b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2_branch2c" + top: "res3b2_branch2c" + name: "scale3b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "bn3b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2a" + top: "res3b3_branch2a" + name: "scale3b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "bn3b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2b" + top: "res3b3_branch2b" + name: "scale3b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res3b3_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "bn3b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b3_branch2c" + top: "res3b3_branch2c" + name: "scale3b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b2" + bottom: "res3b3_branch2c" + top: "res3b3" + name: "res3b3" + type: "Eltwise" +} + +layer { + bottom: "res3b3" + top: "res3b3" + name: "res3b3_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "bn4b1_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2a" + top: "res4b1_branch2a" + name: "scale4b1_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "bn4b1_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2b" + top: "res4b1_branch2b" + name: "scale4b1_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b1_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "bn4b1_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b1_branch2c" + top: "res4b1_branch2c" + name: "scale4b1_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "bn4b2_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2a" + top: "res4b2_branch2a" + name: "scale4b2_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "bn4b2_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2b" + top: "res4b2_branch2b" + name: "scale4b2_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b2_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "bn4b2_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b2_branch2c" + top: "res4b2_branch2c" + name: "scale4b2_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "bn4b3_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2a" + top: "res4b3_branch2a" + name: "scale4b3_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b3_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "bn4b3_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2b" + top: "res4b3_branch2b" + name: "scale4b3_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "bn4b3_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b3_branch2c" + top: "res4b3_branch2c" + name: "scale4b3_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "bn4b4_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2a" + top: "res4b4_branch2a" + name: "scale4b4_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "bn4b4_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2b" + top: "res4b4_branch2b" + name: "scale4b4_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b4_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "bn4b4_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b4_branch2c" + top: "res4b4_branch2c" + name: "scale4b4_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "bn4b5_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2a" + top: "res4b5_branch2a" + name: "scale4b5_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "bn4b5_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2b" + top: "res4b5_branch2b" + name: "scale4b5_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b5_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "bn4b5_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b5_branch2c" + top: "res4b5_branch2c" + name: "scale4b5_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "bn4b6_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2a" + top: "res4b6_branch2a" + name: "scale4b6_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "bn4b6_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2b" + top: "res4b6_branch2b" + name: "scale4b6_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b6_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "bn4b6_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b6_branch2c" + top: "res4b6_branch2c" + name: "scale4b6_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "bn4b7_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2a" + top: "res4b7_branch2a" + name: "scale4b7_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "bn4b7_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2b" + top: "res4b7_branch2b" + name: "scale4b7_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b7_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "bn4b7_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b7_branch2c" + top: "res4b7_branch2c" + name: "scale4b7_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "bn4b8_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2a" + top: "res4b8_branch2a" + name: "scale4b8_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "bn4b8_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2b" + top: "res4b8_branch2b" + name: "scale4b8_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b8_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "bn4b8_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b8_branch2c" + top: "res4b8_branch2c" + name: "scale4b8_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "bn4b9_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2a" + top: "res4b9_branch2a" + name: "scale4b9_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "bn4b9_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2b" + top: "res4b9_branch2b" + name: "scale4b9_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b9_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "bn4b9_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b9_branch2c" + top: "res4b9_branch2c" + name: "scale4b9_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "bn4b10_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2a" + top: "res4b10_branch2a" + name: "scale4b10_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "bn4b10_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2b" + top: "res4b10_branch2b" + name: "scale4b10_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b10_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "bn4b10_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b10_branch2c" + top: "res4b10_branch2c" + name: "scale4b10_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "bn4b11_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2a" + top: "res4b11_branch2a" + name: "scale4b11_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "bn4b11_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2b" + name: "scale4b11_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b11_branch2b" + bottom: "res4b11_branch2b" + name: "res4b11_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b11_branch2b" + top: "res4b11_branch2c" + name: "res4b11_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "bn4b11_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b11_branch2c" + top: "res4b11_branch2c" + name: "scale4b11_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "bn4b12_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2a" + top: "res4b12_branch2a" + name: "scale4b12_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "bn4b12_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2b" + name: "scale4b12_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b12_branch2b" + bottom: "res4b12_branch2b" + name: "res4b12_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b12_branch2b" + top: "res4b12_branch2c" + name: "res4b12_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "bn4b12_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b12_branch2c" + top: "res4b12_branch2c" + name: "scale4b12_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "bn4b13_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2a" + top: "res4b13_branch2a" + name: "scale4b13_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "bn4b13_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2b" + top: "res4b13_branch2b" + name: "scale4b13_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b13_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "bn4b13_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b13_branch2c" + top: "res4b13_branch2c" + name: "scale4b13_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "bn4b14_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2a" + top: "res4b14_branch2a" + name: "scale4b14_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "bn4b14_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2b" + name: "scale4b14_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b14_branch2b" + bottom: "res4b14_branch2b" + name: "res4b14_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b14_branch2b" + top: "res4b14_branch2c" + name: "res4b14_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "bn4b14_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b14_branch2c" + top: "res4b14_branch2c" + name: "scale4b14_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "bn4b15_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2a" + top: "res4b15_branch2a" + name: "scale4b15_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b15_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "bn4b15_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2b" + top: "res4b15_branch2b" + name: "scale4b15_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "bn4b15_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b15_branch2c" + top: "res4b15_branch2c" + name: "scale4b15_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "bn4b16_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2a" + top: "res4b16_branch2a" + name: "scale4b16_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "bn4b16_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2b" + top: "res4b16_branch2b" + name: "scale4b16_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b16_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "bn4b16_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b16_branch2c" + top: "res4b16_branch2c" + name: "scale4b16_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "bn4b17_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2a" + name: "scale4b17_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2a" + bottom: "res4b17_branch2a" + name: "res4b17_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b17_branch2a" + top: "res4b17_branch2b" + name: "res4b17_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "bn4b17_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2b" + top: "res4b17_branch2b" + name: "scale4b17_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b17_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "bn4b17_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b17_branch2c" + top: "res4b17_branch2c" + name: "scale4b17_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "bn4b18_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2a" + top: "res4b18_branch2a" + name: "scale4b18_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "bn4b18_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2b" + top: "res4b18_branch2b" + name: "scale4b18_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b18_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "bn4b18_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b18_branch2c" + top: "res4b18_branch2c" + name: "scale4b18_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "bn4b19_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2a" + top: "res4b19_branch2a" + name: "scale4b19_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "bn4b19_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2b" + top: "res4b19_branch2b" + name: "scale4b19_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b19_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "bn4b19_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b19_branch2c" + top: "res4b19_branch2c" + name: "scale4b19_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "bn4b20_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2a" + top: "res4b20_branch2a" + name: "scale4b20_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "bn4b20_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2b" + top: "res4b20_branch2b" + name: "scale4b20_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b20_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "bn4b20_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b20_branch2c" + top: "res4b20_branch2c" + name: "scale4b20_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "bn4b21_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2a" + top: "res4b21_branch2a" + name: "scale4b21_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "bn4b21_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2b" + top: "res4b21_branch2b" + name: "scale4b21_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b21_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "bn4b21_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21_branch2c" + top: "res4b21_branch2c" + name: "scale4b21_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "bn4b22_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2a" + top: "res4b22_branch2a" + name: "scale4b22_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2a" + bottom: "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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "bn4b22_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2b" + name: "scale4b22_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res4b22_branch2b" + bottom: "res4b22_branch2b" + name: "res4b22_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b22_branch2b" + top: "res4b22_branch2c" + name: "res4b22_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "bn4b22_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22_branch2c" + top: "res4b22_branch2c" + name: "scale4b22_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b21" + bottom: "res4b22_branch2c" + top: "res4b22" + name: "res4b22" + type: "Eltwise" +} + +layer { + bottom: "res4b22" + top: "res4b22" + name: "res4b22_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b22" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5a_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5b_branch2b" + bottom: "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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2a" + bottom: "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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + top: "res5c_branch2b" + bottom: "res5c_branch2b" + name: "res5c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2c" + name: "res5c_branch2c" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4b22" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rfcn_test.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rfcn_test.pt new file mode 100644 index 000000000..f6a8a69d9 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rfcn_test.pt @@ -0,0 +1,3699 @@ +name: "ResNet-50" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "rois" +input_shape { + dim: 1 # to be changed on-the-fly to num ROIs + dim: 5 # [batch ind, x1, y1, x2, y2] zero-based indexing +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rpn_test.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rpn_test.pt new file mode 100644 index 000000000..0a47c5362 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/rpn_test.pt @@ -0,0 +1,2955 @@ +name: "ZF" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +#-----------------------layer +------------------------- + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#-----------------------output------------------------ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt new file mode 100644 index 000000000..8bfc7afe7 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_solver80k120k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt new file mode 100644 index 000000000..420e4a9c7 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rfcn_ohem_train.pt @@ -0,0 +1,3781 @@ +name: "ResNet-50" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt new file mode 100644 index 000000000..b8588d49b --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt new file mode 100644 index 000000000..4e0c2667b --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage1_rpn_train.pt @@ -0,0 +1,2966 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt new file mode 100644 index 000000000..59a946fc8 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_solver80k120k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rfcn_ohem" +iter_size: 2 diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt new file mode 100644 index 000000000..420e4a9c7 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rfcn_ohem_train.pt @@ -0,0 +1,3781 @@ +name: "ResNet-50" +layer { + name: 'data' + type: 'Python' + top: 'data' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt new file mode 100644 index 000000000..a12082b25 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt new file mode 100644 index 000000000..a5cd0c60a --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage2_rpn_train.pt @@ -0,0 +1,2966 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt new file mode 100644 index 000000000..40a17b8f8 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_solver60k80k.pt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 60000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0005 + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rpn" diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt new file mode 100644 index 000000000..a5cd0c60a --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_alt_opt_5step_ohem/stage3_rpn_train.pt @@ -0,0 +1,2966 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 256 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/test.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/test.prototxt new file mode 100644 index 000000000..83b223c50 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/test.prototxt @@ -0,0 +1,3787 @@ +name: "ResNet50" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res5c" + top: "rpn/output" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 4116 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 84 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 84 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/train_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/train_ohem.prototxt new file mode 100644 index 000000000..f70910389 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/class-aware/train_ohem.prototxt @@ -0,0 +1,3946 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res5c" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 4116 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 84 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver.prototxt new file mode 100644 index 000000000..6fb18c2f1 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver.prototxt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic.prototxt" +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rfcn" +iter_size: 2 +# debug_info: true diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver_ohem.prototxt new file mode 100644 index 000000000..8f4cad20b --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/solver_ohem.prototxt @@ -0,0 +1,16 @@ +train_net: "models/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic_ohem.prototxt" +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 80000 +display: 20 + +momentum: 0.9 +weight_decay: 0.0005 +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "resnet50_rfcn_ohem" +iter_size: 2 +# debug_info: true diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/test_agnostic.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/test_agnostic.prototxt new file mode 100644 index 000000000..6bb71ee32 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/test_agnostic.prototxt @@ -0,0 +1,3787 @@ +name: "ResNet50" + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 224 + dim: 224 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 3 +} + +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred_pre" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob_pre" +} + +layer { + name: "cls_prob_reshape" + type: "Reshape" + bottom: "cls_prob_pre" + top: "cls_prob" + reshape_param { + shape { + dim: -1 + dim: 21 + } + } +} + +layer { + name: "bbox_pred_reshape" + type: "Reshape" + bottom: "bbox_pred_pre" + top: "bbox_pred" + reshape_param { + shape { + dim: -1 + dim: 8 + } + } +} + + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic.prototxt new file mode 100644 index 000000000..48a47d1b3 --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic.prototxt @@ -0,0 +1,3877 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + top: "loss_cls" + loss_weight: 1 + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels" + top: "accuarcy" + #include: { phase: TEST } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: 'bbox_inside_weights' + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" +} + diff --git a/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic_ohem.prototxt b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic_ohem.prototxt new file mode 100644 index 000000000..2ce1c741c --- /dev/null +++ b/models/intel_optimized_models/rfcn/pascal_voc/ResNet-50/rfcn_end2end/train_agnostic_ohem.prototxt @@ -0,0 +1,3946 @@ +name: "ResNet-50" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +# ------------------------ conv1 ----------------------------- +layer { + bottom: "data" + top: "conv1" + name: "conv1" + type: "Convolution" + convolution_param { + num_output: 64 + kernel_size: 7 + pad: 3 + stride: 2 + } + param { + lr_mult: 0.0 + } + param { + lr_mult: 0.0 + } + +} + +layer { + bottom: "conv1" + top: "conv1" + name: "bn_conv1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "scale_conv1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "conv1" + top: "conv1" + name: "conv1_relu" + type: "ReLU" +} + +layer { + bottom: "conv1" + top: "pool1" + name: "pool1" + type: "Pooling" + pooling_param { + kernel_size: 3 + stride: 2 + pool: MAX + } +} + +layer { + bottom: "pool1" + top: "res2a_branch1" + name: "res2a_branch1" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "bn2a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch1" + top: "res2a_branch1" + name: "scale2a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "bn2a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2a" + top: "res2a_branch2a" + name: "scale2a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "bn2a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2b" + top: "res2a_branch2b" + name: "scale2a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "bn2a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2a_branch2c" + top: "res2a_branch2c" + name: "scale2a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "bn2b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2a" + top: "res2b_branch2a" + name: "scale2b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "bn2b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2b" + top: "res2b_branch2b" + name: "scale2b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "bn2b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b_branch2c" + top: "res2b_branch2c" + name: "scale2b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "bn2c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2a" + top: "res2c_branch2a" + name: "scale2c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "bn2c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2b" + top: "res2c_branch2b" + name: "scale2c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "bn2c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2c_branch2c" + top: "res2c_branch2c" + name: "scale2c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res2b" + bottom: "res2c_branch2c" + top: "res2c" + name: "res2c" + type: "Eltwise" +} + +layer { + bottom: "res2c" + top: "res2c" + name: "res2c_relu" + type: "ReLU" +} + +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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "bn3a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch1" + top: "res3a_branch1" + name: "scale3a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "bn3a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2a" + top: "res3a_branch2a" + name: "scale3a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "bn3a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2b" + top: "res3a_branch2b" + name: "scale3a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "bn3a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a_branch2c" + top: "res3a_branch2c" + name: "scale3a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res3b_branch2a" + name: "res3b_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "bn3b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "scale3b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2a" + name: "res3b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2a" + top: "res3b_branch2b" + name: "res3b_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "bn3b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "scale3b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2b" + name: "res3b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b_branch2b" + top: "res3b_branch2c" + name: "res3b_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "bn3b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b_branch2c" + top: "res3b_branch2c" + name: "scale3b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3a" + bottom: "res3b_branch2c" + top: "res3b" + name: "res3b" + type: "Eltwise" +} + +layer { + bottom: "res3b" + top: "res3b" + name: "res3b_relu" + type: "ReLU" +} + +layer { + bottom: "res3b" + top: "res3c_branch2a" + name: "res3c_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "bn3c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "scale3c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2a" + name: "res3c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2a" + top: "res3c_branch2b" + name: "res3c_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "bn3c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "scale3c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2b" + name: "res3c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3c_branch2b" + top: "res3c_branch2c" + name: "res3c_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "bn3c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c_branch2c" + top: "res3c_branch2c" + name: "scale3c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3b" + bottom: "res3c_branch2c" + top: "res3c" + name: "res3c" + type: "Eltwise" +} + +layer { + bottom: "res3c" + top: "res3c" + name: "res3c_relu" + type: "ReLU" +} + +layer { + bottom: "res3c" + top: "res3d_branch2a" + name: "res3d_branch2a" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "bn3d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "scale3d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2a" + name: "res3d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2a" + top: "res3d_branch2b" + name: "res3d_branch2b" + type: "Convolution" + convolution_param { + num_output: 128 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "bn3d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "scale3d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2b" + name: "res3d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res3d_branch2b" + top: "res3d_branch2c" + name: "res3d_branch2c" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "bn3d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d_branch2c" + top: "res3d_branch2c" + name: "scale3d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3c" + bottom: "res3d_branch2c" + top: "res3d" + name: "res3d" + type: "Eltwise" +} + +layer { + bottom: "res3d" + top: "res3d" + name: "res3d_relu" + type: "ReLU" +} + +layer { + bottom: "res3d" + top: "res4a_branch1" + name: "res4a_branch1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "bn4a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch1" + top: "res4a_branch1" + name: "scale4a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res3d" + top: "res4a_branch2a" + name: "res4a_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 2 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "bn4a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2a" + top: "res4a_branch2a" + name: "scale4a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "bn4a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2b" + top: "res4a_branch2b" + name: "scale4a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "bn4a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a_branch2c" + top: "res4a_branch2c" + name: "scale4a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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: "res4b_branch2a" + name: "res4b_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "bn4b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "scale4b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2a" + name: "res4b_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2a" + top: "res4b_branch2b" + name: "res4b_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "bn4b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "scale4b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2b" + name: "res4b_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b_branch2b" + top: "res4b_branch2c" + name: "res4b_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "bn4b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b_branch2c" + top: "res4b_branch2c" + name: "scale4b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4a" + bottom: "res4b_branch2c" + top: "res4b" + name: "res4b" + type: "Eltwise" +} + +layer { + bottom: "res4b" + top: "res4b" + name: "res4b_relu" + type: "ReLU" +} + +layer { + bottom: "res4b" + top: "res4c_branch2a" + name: "res4c_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "bn4c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "scale4c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2a" + name: "res4c_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2a" + top: "res4c_branch2b" + name: "res4c_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "bn4c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "scale4c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2b" + name: "res4c_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4c_branch2b" + top: "res4c_branch2c" + name: "res4c_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "bn4c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c_branch2c" + top: "res4c_branch2c" + name: "scale4c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4b" + bottom: "res4c_branch2c" + top: "res4c" + name: "res4c" + type: "Eltwise" +} + +layer { + bottom: "res4c" + top: "res4c" + name: "res4c_relu" + type: "ReLU" +} + +layer { + bottom: "res4c" + top: "res4d_branch2a" + name: "res4d_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "bn4d_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "scale4d_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2a" + name: "res4d_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2a" + top: "res4d_branch2b" + name: "res4d_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "bn4d_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "scale4d_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2b" + name: "res4d_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4d_branch2b" + top: "res4d_branch2c" + name: "res4d_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "bn4d_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d_branch2c" + top: "res4d_branch2c" + name: "scale4d_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4c" + bottom: "res4d_branch2c" + top: "res4d" + name: "res4d" + type: "Eltwise" +} + +layer { + bottom: "res4d" + top: "res4d" + name: "res4d_relu" + type: "ReLU" +} + +layer { + bottom: "res4d" + top: "res4e_branch2a" + name: "res4e_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "bn4e_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "scale4e_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2a" + name: "res4e_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2a" + top: "res4e_branch2b" + name: "res4e_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "bn4e_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "scale4e_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2b" + name: "res4e_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4e_branch2b" + top: "res4e_branch2c" + name: "res4e_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "bn4e_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e_branch2c" + top: "res4e_branch2c" + name: "scale4e_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4d" + bottom: "res4e_branch2c" + top: "res4e" + name: "res4e" + type: "Eltwise" +} + +layer { + bottom: "res4e" + top: "res4e" + name: "res4e_relu" + type: "ReLU" +} + +layer { + bottom: "res4e" + top: "res4f_branch2a" + name: "res4f_branch2a" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "bn4f_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "scale4f_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2a" + name: "res4f_branch2a_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2a" + top: "res4f_branch2b" + name: "res4f_branch2b" + type: "Convolution" + convolution_param { + num_output: 256 + kernel_size: 3 + pad: 1 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "bn4f_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "scale4f_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2b" + name: "res4f_branch2b_relu" + type: "ReLU" +} + +layer { + bottom: "res4f_branch2b" + top: "res4f_branch2c" + name: "res4f_branch2c" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "bn4f_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f_branch2c" + top: "res4f_branch2c" + name: "scale4f_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4e" + bottom: "res4f_branch2c" + top: "res4f" + name: "res4f" + type: "Eltwise" +} + +layer { + bottom: "res4f" + top: "res4f" + name: "res4f_relu" + type: "ReLU" +} + +layer { + bottom: "res4f" + top: "res5a_branch1" + name: "res5a_branch1" + type: "Convolution" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "bn5a_branch1" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch1" + top: "res5a_branch1" + name: "scale5a_branch1" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res4f" + top: "res5a_branch2a" + name: "res5a_branch2a" + type: "Convolution" + convolution_param { + num_output: 512 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "bn5a_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2a" + top: "res5a_branch2a" + name: "scale5a_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "bn5a_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2b" + top: "res5a_branch2b" + name: "scale5a_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "bn5a_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5a_branch2c" + top: "res5a_branch2c" + name: "scale5a_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "bn5b_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2a" + top: "res5b_branch2a" + name: "scale5b_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "bn5b_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2b" + top: "res5b_branch2b" + name: "scale5b_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "bn5b_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b_branch2c" + top: "res5b_branch2c" + name: "scale5b_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "bn5c_branch2a" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2a" + top: "res5c_branch2a" + name: "scale5c_branch2a" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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 + dilation: 2 + pad: 2 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "bn5c_branch2b" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2b" + top: "res5c_branch2b" + name: "scale5c_branch2b" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.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" + convolution_param { + num_output: 2048 + kernel_size: 1 + pad: 0 + stride: 1 + bias_term: false + } + param { + lr_mult: 1.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "bn5c_branch2c" + type: "BatchNorm" + batch_norm_param { + use_global_stats: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5c_branch2c" + top: "res5c_branch2c" + name: "scale5c_branch2c" + type: "Scale" + scale_param { + bias_term: true + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } +} + +layer { + bottom: "res5b" + bottom: "res5c_branch2c" + top: "res5c" + name: "res5c" + type: "Eltwise" +} + +layer { + bottom: "res5c" + top: "res5c" + name: "res5c_relu" + type: "ReLU" +} + + +#========= RPN ============ + +layer { + name: "rpn_conv/3x3" + type: "Convolution" + bottom: "res4f" + top: "rpn/output" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 512 + kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu/3x3" + type: "ReLU" + bottom: "rpn/output" + top: "rpn/output" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 18 # 2(bg/fg) * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn/output" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + convolution_param { + num_output: 36 # 4 * 9(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "'feat_stride': 16" + } +} + +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} + +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} + +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 18 dim: -1 dim: 0 } } +} + +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' +# top: 'rpn_scores' + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "'feat_stride': 16" + } +} + +#layer { +# name: 'debug-data' +# type: 'Python' +# bottom: 'data' +# bottom: 'rpn_rois' +# bottom: 'rpn_scores' +# python_param { +# module: 'rpn.debug_layer' +# layer: 'RPNDebugLayer' +# } +#} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 2" + } +} + +#----------------------new conv layer------------------ +layer { + bottom: "res5c" + top: "conv_new_1" + name: "conv_new_1" + type: "Convolution" + convolution_param { + num_output: 1024 + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +layer { + bottom: "conv_new_1" + top: "conv_new_1" + name: "conv_new_1_relu" + type: "ReLU" +} + +layer { + bottom: "conv_new_1" + top: "rfcn_cls" + name: "rfcn_cls" + type: "Convolution" + convolution_param { + num_output: 1029 #21*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} +layer { + bottom: "conv_new_1" + top: "rfcn_bbox" + name: "rfcn_bbox" + type: "Convolution" + convolution_param { + num_output: 392 #8*(7^2) cls_num*(score_maps_size^2) + kernel_size: 1 + pad: 0 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + param { + lr_mult: 1.0 + } + param { + lr_mult: 2.0 + } +} + +#--------------position sensitive RoI pooling-------------- +layer { + bottom: "rfcn_cls" + bottom: "rois" + top: "psroipooled_cls_rois" + name: "psroipooled_cls_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 21 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_cls_rois" + top: "cls_score" + name: "ave_cls_score_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +layer { + bottom: "rfcn_bbox" + bottom: "rois" + top: "psroipooled_loc_rois" + name: "psroipooled_loc_rois" + type: "PSROIPooling" + psroi_pooling_param { + spatial_scale: 0.0625 + output_dim: 8 + group_size: 7 + } +} + +layer { + bottom: "psroipooled_loc_rois" + top: "bbox_pred" + name: "ave_bbox_pred_rois" + type: "Pooling" + pooling_param { + pool: AVE + kernel_size: 7 + stride: 7 + } +} + + +#--------------online hard example mining-------------- +layer { + name: "per_roi_loss_cls" + type: "SoftmaxWithLossOHEM" + bottom: "cls_score" + bottom: "labels" + top: "temp_loss_cls" + top: "temp_prob_cls" + top: "per_roi_loss_cls" + loss_weight: 0 + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + top: "temp_loss_bbox" + top: "per_roi_loss_bbox" + loss_weight: 0 + loss_weight: 0 + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "per_roi_loss" + type: "Eltwise" + bottom: "per_roi_loss_cls" + bottom: "per_roi_loss_bbox" + top: "per_roi_loss" + propagate_down: false + propagate_down: false +} + +layer { + bottom: "rois" + bottom: "per_roi_loss" + bottom: "labels" + bottom: "bbox_inside_weights" + top: "labels_ohem" + top: "bbox_loss_weights_ohem" + name: "annotator_detector" + type: "BoxAnnotatorOHEM" + box_annotator_ohem_param { + roi_per_img: 128 + ignore_label: -1 + } + propagate_down: false + propagate_down: false + propagate_down: false + propagate_down: false +} + +layer { + name: "silence" + type: "Silence" + bottom: "bbox_outside_weights" + bottom: "temp_loss_cls" + bottom: "temp_prob_cls" + bottom: "temp_loss_bbox" +} + +#-----------------------output------------------------ +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels_ohem" + top: "loss_cls" + loss_weight: 1 + loss_param { + ignore_label: -1 + } + propagate_down: true + propagate_down: false +} + +layer { + name: "accuarcy" + type: "Accuracy" + bottom: "cls_score" + bottom: "labels_ohem" + top: "accuarcy" + #include: { phase: TEST } + accuracy_param { + ignore_label: -1 + } + propagate_down: false + propagate_down: false +} + +layer { + name: "loss_bbox" + type: "SmoothL1LossOHEM" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_loss_weights_ohem" + top: "loss_bbox" + loss_weight: 1 + loss_param { + normalization: PRE_FIXED + pre_fixed_normalizer: 128 + } + propagate_down: true + propagate_down: false + propagate_down: false +} + diff --git a/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/deploy.prototxt b/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/deploy.prototxt index 733229e89..0ebace1e7 100644 --- a/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/deploy.prototxt +++ b/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/deploy.prototxt @@ -1613,14 +1613,15 @@ layer { nms_threshold: 0.45 top_k: 400 } - save_output_param { - output_directory: "data/ssd_out/VOC2007/SSD_300x300" - output_name_prefix: "comp4_det_test_" - output_format: "VOC" - label_map_file: "data/VOC0712/labelmap_voc.prototxt" - name_size_file: "data/VOC0712/test_name_size.txt" - num_test_image: 4952 - } + #Only for output to disk + #save_output_param { + # output_directory: "data/ssd_out/VOC2007/SSD_300x300" + # output_name_prefix: "comp4_det_test_" + # output_format: "VOC" + # label_map_file: "data/VOC0712/labelmap_voc.prototxt" + # name_size_file: "data/VOC0712/test_name_size.txt" + # num_test_image: 4952 + #} code_type: CENTER_SIZE keep_top_k: 200 confidence_threshold: 0.01 diff --git a/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/test.prototxt b/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/test.prototxt index a9d4e83a9..9781bcc05 100644 --- a/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/test.prototxt +++ b/models/intel_optimized_models/ssd/VGGNet/VOC0712/SSD_300x300/test.prototxt @@ -1637,14 +1637,15 @@ layer { nms_threshold: 0.45 top_k: 400 } - save_output_param { - output_directory: "data/ssd_out/VOC2007/SSD_300x300" - output_name_prefix: "comp4_det_test_" - output_format: "VOC" - label_map_file: "data/VOC0712/labelmap_voc.prototxt" - name_size_file: "data/VOC0712/test_name_size.txt" - num_test_image: 4952 - } + #Only for output to disk + #save_output_param { + # output_directory: "data/ssd_out/VOC2007/SSD_300x300" + # output_name_prefix: "comp4_det_test_" + # output_format: "VOC" + # label_map_file: "data/VOC0712/labelmap_voc.prototxt" + # name_size_file: "data/VOC0712/test_name_size.txt" + # num_test_image: 4952 + #} code_type: CENTER_SIZE keep_top_k: 200 confidence_threshold: 0.01 diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 34c939a5b..296bfad4f 100755 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -36,6 +36,11 @@ # from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed +try: + from ._caffe import MultiSync, MultiSolver +except ImportError: + pass + from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 533c67295..2de7611ee 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -59,6 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef USE_MLSL #include "caffe/multinode/mlsl.hpp" +#include "caffe/multinode/multi_sync.hpp" #endif // Temporary solution for numpy < 1.7 versions: old macro, no promises. @@ -321,6 +322,7 @@ struct NdarrayCallPolicies : public bp::default_call_policies { } }; + bp::object Blob_Reshape(bp::tuple args, bp::dict kwargs) { if (bp::len(kwargs) > 0) { throw std::runtime_error("Blob.reshape takes no kwargs"); @@ -371,6 +373,23 @@ void Solver_add_callback(Solver * solver, bp::object on_start, solver->add_callback(new PythonCallback(on_start, on_gradients_ready)); } +#ifdef USE_MLSL +template +void MultiSolverBackward(MultiSolver * solver) +{ + solver->Backward(); +} + +#ifdef FW_OVERLAP_OPT +template +Dtype MultiSolverUpdateAndForward(MultiSolver * solver) +{ + return solver->UpdateAndForward(); +} +#endif + +#endif + BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); BOOST_PYTHON_MODULE(_caffe) { @@ -381,6 +400,19 @@ BOOST_PYTHON_MODULE(_caffe) { #ifdef USE_MLSL InitMultinode(); + bp::class_, shared_ptr >, boost::noncopyable>( + "MultiSolver", bp::init>>()) + .def("update", &MultiSolver::WaitAndUpdate) +#ifdef FW_OVERLAP_OPT + .def("update_and_forward", &MultiSolverUpdateAndForward) +#endif + .def("forward", &MultiSolver::Forward) + .def("backward", &MultiSolverBackward) + .def("clear_param_diffs", &MultiSolver::ClearParamDiffs); + + bp::class_> ( "MultiSync", bp::init>>()) + .def("init", &MultiSync::init) + .add_property("solver", &MultiSync::get_solver); #endif bp::def("_node_id", &NodeId); bp::def("_num_nodes", &NumNodes); @@ -462,7 +494,14 @@ BOOST_PYTHON_MODULE(_caffe) { .add_property("data", bp::make_function(&Blob::mutable_cpu_data, NdarrayCallPolicies())) .add_property("diff", bp::make_function(&Blob::mutable_cpu_diff, - NdarrayCallPolicies())); + NdarrayCallPolicies())) +#ifdef CO_SIM + .add_property("data_ro", bp::make_function(&Blob::cpu_data_cosim, + NdarrayCallPolicies())) + .add_property("diff_ro", bp::make_function(&Blob::cpu_diff_cosim, + NdarrayCallPolicies())) +#endif + ; BP_REGISTER_SHARED_PTR_TO_PYTHON(Blob); bp::class_, shared_ptr >, diff --git a/scripts/benchmark_config_default.json b/scripts/benchmark_config_default.json new file mode 100644 index 000000000..daa0d46f8 --- /dev/null +++ b/scripts/benchmark_config_default.json @@ -0,0 +1,44 @@ +{ + "params":{ + "topology" : "resnet_50", + "hostfile" : "", + "network" : "", + "netmask" : "", + "dummy_data_use" : true, + "scal_test" : false, + "caffe_bin" : "", + "engine" : "" + }, + "perf_batch_size_table" : { + "alexnet" : { + "bdw" : "1024", + "skx" : "1024", + "knl" : "512", + "knm" : "1024" + }, + "googlenet" : { + "bdw" : "128", + "skx" : "144", + "knl" : "144", + "knm" : "144" + }, + "googlenet_v2" : { + "bdw" : "128", + "skx" : "192", + "knl" : "192", + "knm" : "128" + }, + "resnet_50" : { + "bdw" : "32", + "skx" : "96", + "knl" : "64", + "knm" : "64" + } + }, + "scal_batch_size_table" : { + "alexnet" : "256", + "googlenet" : "64", + "googlenet_v2" : "64", + "resnet_50" : "64" + } +} diff --git a/scripts/benchmark_config_template.json b/scripts/benchmark_config_template.json index 440939c62..f1d141ff1 100644 --- a/scripts/benchmark_config_template.json +++ b/scripts/benchmark_config_template.json @@ -9,7 +9,7 @@ "caffe_bin" : "", "engine" : "choose CAFFE, MKL2017 or MKLDNN" }, - "batch_size_table" : { + "perf_batch_size_table" : { "alexnet" : { "bdw" : "1024", "skx" : "1024", @@ -34,5 +34,11 @@ "knl" : "64", "knm" : "64" } + }, + "scal_batch_size_table" : { + "alexnet" : "256", + "googlenet" : "64", + "googlenet_v2" : "64", + "resnet_50" : "64" } } diff --git a/scripts/build_intelcaffe.sh b/scripts/build_intelcaffe.sh index a29da73dc..f16acebab 100755 --- a/scripts/build_intelcaffe.sh +++ b/scripts/build_intelcaffe.sh @@ -6,7 +6,7 @@ function usage echo "Usage:" echo " $script_name [--multinode] [--compiler icc/gcc] [--rebuild] " echo " [--boost_root boost_install_dir] [--layer_timing]" - echo " [--debug]" + echo " [--debug] [--build_option]" echo "" echo " Parameters:" echo " multinode: specify it to build caffe for multinode. build for single" @@ -20,6 +20,7 @@ function usage echo " layer_timing: build caffe for multinode with CAFFE_PER_LAYER_TIMINGS flag." echo " by default, the flag is NOT included for build." echo " debug: build caffe with debug flag. by default, the option is off." + echo " build_option: build option to disable optimization. by default, the option is blank." } function check_dependency @@ -36,15 +37,18 @@ function check_dependency function build_caffe_gcc { is_multinode_=$1 - + build_option_=$2 cp Makefile.config.example Makefile.config if [ $is_multinode_ -eq 1 ]; then echo "USE_MLSL := 1" >> Makefile.config + echo "ALLOW_LMDB_NOLOCK := 1" >> Makefile.config - mlslvars_sh=`find external/mlsl/ -name mlslvars.sh` - if [ -f $mlslvars_sh ]; then - source $mlslvars_sh + if [ -z $MLSL_ROOT ]; then + mlslvars_sh=`find external/mlsl/ -name mlslvars.sh` + if [ -f $mlslvars_sh ]; then + source $mlslvars_sh + fi fi fi @@ -59,12 +63,19 @@ function build_caffe_gcc if [ "$boost_root" != "" ]; then echo "BOOST_ROOT := $boost_root" >> Makefile.config fi - + for option in $build_option_ + do + grep "$option\s*:= 0" Makefile.config > /dev/null + if [ $? -eq 0 ]; then + sed -i "s/$option\s*:= 0/$option := 1/g" Makefile.config + fi + done if [ $is_rebuild -eq 1 ]; then make clean fi - - make -j 8 + + make -j $(nproc) + make pycaffe } function download_build_boost @@ -98,9 +109,10 @@ function download_build_boost function build_caffe_icc { is_multinode_=$1 + build_option_=$2 cmake_params="-DCPU_ONLY=1 -DBOOST_ROOT=$boost_root" if [ $is_multinode_ -eq 1 ]; then - cmake_params+=" -DUSE_MLSL=1" + cmake_params+=" -DUSE_MLSL=1 -DALLOW_LMDB_NOLOCK=1" fi if [ $is_layer_timing -eq 1 ]; then @@ -110,7 +122,10 @@ function build_caffe_icc if [ $debug -eq 1 ]; then cmake_params+=" -DDEBUG=1" fi - + for option in $build_option_ + do + cmake_params+=" -D$option=1 " + done build_dir=$root_dir/build if [ $is_rebuild -eq 1 ] && [ -d $build_dir ]; then rm -r $build_dir @@ -121,19 +136,22 @@ function build_caffe_icc echo "Parameters: $cmake_params" CC=icc CXX=icpc cmake .. $cmake_params - CC=icc CXX=icpc make all -j 8 + CC=icc CXX=icpc make all -j $(nproc) } function sync_caffe_dir { - caffe_dir=`pwd` - caffe_parent_dir=`dirname $caffe_dir` - which ansible >/dev/null - if [ $? -eq 0 ]; then - ansible ourcluster -m synchronize -a "src=$caffe_dir dest=$caffe_parent_dir" - else - echo "Warning: no ansible command for synchronizing caffe directory in nodes" - fi + echo "Synchronize caffe binary between nodes..." + caffe_dir=`pwd` + caffe_parent_dir=`dirname $caffe_dir` + which ansible >/dev/null + if [ $? -eq 0 ]; then + set -x + ansible ourcluster -m synchronize -a "src=$caffe_dir dest=$caffe_parent_dir" + set +x + else + echo "Warning: no ansible command for synchronizing caffe directory in nodes" + fi } @@ -145,6 +163,7 @@ boost_root="" is_rebuild=0 compiler="icc" is_multinode=0 +build_option="" while [[ $# -ge 1 ]] do key="$1" @@ -163,6 +182,10 @@ do boost_root="$2" shift ;; + --build_option) + build_option="$2" + shift + ;; --layer_timing) is_layer_timing=1 ;; @@ -202,6 +225,12 @@ do fi done +# Fix the compilation failure if icc environment is set. +# During building caffe, MKL library will be downloaded, +# and the environment variable will be set. +unset MKLROOT +unset CPATH + echo "Build Intel Caffe by $compiler..." if [ "$compiler" == "icc" ]; then if [ "$boost_root" == "" ]; then @@ -212,12 +241,12 @@ if [ "$compiler" == "icc" ]; then boost_root=$(cd $boost_root; pwd) fi - build_caffe_icc $is_multinode + build_caffe_icc $is_multinode "$build_option" else - build_caffe_gcc $is_multinode + build_caffe_gcc $is_multinode "$build_option" fi if [ $is_multinode -eq 1 ]; then - sync_caffe_dir + sync_caffe_dir fi diff --git a/scripts/calibrator.py b/scripts/calibrator.py index 4bda3bb8d..b6317fc7b 100644 --- a/scripts/calibrator.py +++ b/scripts/calibrator.py @@ -39,12 +39,6 @@ import sys import copy import argparse - -caffe_root = "../" -sys.path.insert(0, caffe_root + 'python') - -import caffe -from caffe.proto import caffe_pb2 import google.protobuf.text_format as txtf @@ -207,7 +201,6 @@ def transform_convolutions(model_path, compiled_model_path): if (l, index) != convolution_layers[-1] else len(net.layer), [i[0] for i in fusion_layer]) inputwith_relu = get_all_top_layers(l, net, index, skip_layers, interesting_layers) - for si in range(0, len(new_net.layer[index].quantization_param.scale_out)): if len(outputwith_relu) > 0 or l.name in u8_layers or conv_relu_flag: # u8 new_net.layer[index].quantization_param.scale_out[si] = round(u8_max / new_net.layer[index]. @@ -233,11 +226,10 @@ def transform_convolutions(model_path, compiled_model_path): def generate_sample(sample_path, input_model, weights, - quantized_model, detection, iterations=1, error_margin=1, power=0): - cmd = '{0} quantize -model {1} -weights {2} -model_quantized {3} -iterations {4} ' \ - '-trimming_mode dynamic_fixed_point -error_margin {5} -power {6}'.format(sample_path, input_model, weights, - quantized_model, iterations, - error_margin, power) + quantized_model, detection, scaling_mode, iterations=1, error_margin=1, power=0): + cmd = '{0} quantize -model {1} -weights {2} -model_quantized {3} -iterations {4} -error_margin {5} -power {6}' \ + ' -scaling {7} -trimming_mode dynamic_fixed_point'.format(sample_path, input_model, weights, quantized_model, + iterations, error_margin, power, scaling_mode) if detection: cmd += ' --detection=1' @@ -307,6 +299,20 @@ def tuning_quantized_topology(base_top1_accuracy, prototxt, caffe_bin, model_wei current_top1_accuracy = get_the_accuracy(caffe_bin, prototxt, model_weights, iterations, detection, blob_name) +def accuracy_blob_name_parser(prototxt): + net = read_prototxt(prototxt) + if not net: + print 'Please check the model prototxt integrity.' + sys.exit(-1) + res = {} + for i in net.layer: + if i.type == 'Accuracy': + if i.HasField('accuracy_param'): + res[i.accuracy_param.top_k] = i.top[0] + else: + res[1] = i.top[0] + return res[sorted(res.keys())[0]] if res else '' + def check_blob_name_existence(prototxt, blob_name): net = read_prototxt(prototxt) if not net.layer: @@ -322,15 +328,17 @@ def check_blob_name_existence(prototxt, blob_name): if __name__ == '__main__': usage_string = 'Usage: 1.Build the caffe\n ' \ - '2.cd /path/to/caffe/scripts\n ' \ - '3.python calibrator.py ' \ - ' -r /path/to/caffe/build ' \ - ' -w pre-trained-fp32 weights ' \ - ' -m typology ' \ - ' -i iterations ' \ - ' -l acceptable accuracy loss value, the default value is 0.01(stands for 1%)' \ - ' -d 1(0 means classification while 1 means detection, the default value is 0' \ - ' -n blob name which means accuracy.\n ' + '2.cd /path/to/caffe/scripts\n ' \ + '3.python calibrator.py ' \ + ' -r /path/to/caffe/build ' \ + ' -w pre-trained-fp32 weights ' \ + ' -m typology ' \ + ' -i iterations ' \ + ' -l acceptable accuracy loss value, the default value is 0.01 stands for one percent' \ + ' -d 1(0 means classification while 1 means detection, the default value is 0' \ + ' -n blob name which means accuracy' \ + ' -c scaling mode, the default value is single' \ + ' -s sampling iterations' parser = argparse.ArgumentParser(add_help=False) parser.add_argument('-h', '--help', action='help', help=usage_string) @@ -346,7 +354,7 @@ def check_blob_name_existence(prototxt, blob_name): parser.add_argument('-l', '--accuracy_loss', action='store', dest='loss', default=0.01, help='the acceptable accuracy loss that raised by 8-Bit quantization, ' - 'default value is 0.01(1%).') + 'default value is 0.01(one percent).') parser.add_argument('-d', '--detection', action='store', dest='is_detection', default=0, help='0 for classification while 1 for detection, default value is 0.') @@ -356,13 +364,49 @@ def check_blob_name_existence(prototxt, blob_name): parser.add_argument('-n', '--blob_name', action='store', dest='blob_name', default='', help='top blob name which stands for accuracy') - params = parser.parse_args() + parser.add_argument('-c', '--weights_channel', action='store', dest='scaling_mode', default='single', + help='the scaling mode for weights') + + parser.add_argument('-s', '--sampling_iterations', action='store', dest='sampling_iterations', default=10, + help='iteration number of sampling, the default value is 10.') + + params = parser.parse_args() + + if not check_existence(params.root): + print 'Please check the {} existence.'.format(params.root) + sys.exit(-1) + + pycaffe_path = os.path.abspath(os.path.dirname(os.path.abspath(params.root))) + os.path.sep + 'python' + if not check_existence(pycaffe_path): + print "Please check the pycaffe existence.Suggest to rebuild pycaffe via 'make pycaffe'" + sys.path.insert(0, pycaffe_path) + import caffe + from caffe.proto import caffe_pb2 + try: user_input_iterations = int(params.iterations) except: print 'Set the iterations to the default value 1000' user_input_iterations = 1000 + else: + if user_input_iterations < 1: + print 'Invalid iterations!The value should be larger than zero.' + sys.exit(-1) + try: + user_sampling_iteration = int(params.sampling_iterations) + except: + print 'Set the sampling iteration to the default value 10' + user_sampling_iteration = 10 + else: + if user_sampling_iteration < 1: + print 'Invalid sampling iteration!The value should be larger than zero.' + sys.exit(-1) + + if params.scaling_mode != 'multipe' and params.scaling_mode != 'single': + user_scaling_mode = 'single' + else: + user_scaling_mode = params.scaling_mode try: toleration = float(params.loss) @@ -379,34 +423,47 @@ def check_blob_name_existence(prototxt, blob_name): detection_flag = 0 model = os.path.abspath(params.model) + if not check_existence(model): + print 'Please check model: {} existence.'.format(model) + sys.exit(-1) + user_input_weights = os.path.abspath(params.weights) - sample = os.path.abspath(params.root + 'tools/sample') - caffe_bin_path = os.path.abspath(params.root + 'tools/caffe') - setup_env() + if not check_existence(user_input_weights): + print 'Please check weights: {} existence.'.format(user_input_weights) + sys.exit(-1) + + sample = os.path.abspath(params.root + os.path.sep + 'tools/sample') + if not check_existence(sample): + print 'Please check sample: {} existence.'.format(sample) + sys.exit(-1) - if not check_existence(model) or not check_existence(user_input_weights) or not check_existence(sample) \ - or not check_existence(caffe_bin_path): + caffe_bin_path = os.path.abspath(params.root + os.path.sep + 'tools/caffe') + if not check_existence(caffe_bin_path): print 'Please check model/weights/sample existence.' sys.exit(-1) + setup_env() + target_blob_name = params.blob_name + if not target_blob_name and not detection_flag: + target_blob_name = accuracy_blob_name_parser(model) + if not target_blob_name or not check_blob_name_existence(model, target_blob_name): print 'Please specify valid blob name and rerun the script.' sys.exit(-1) - sys.path.insert(0, params.root + '../python') quantized_prototxt = model.rsplit('.')[0] + '_quantized.prototxt' quantized_weights = user_input_weights.rsplit('.')[0] + '_quantized.caffemodel' - enable_floating_point = 0 + enable_power_of_2 = 0 print 'Sampling...' - generate_sample(sample, model, user_input_weights, - quantized_prototxt, detection_flag, 10, 100 * toleration, enable_floating_point) + generate_sample(sample, model, user_input_weights, quantized_prototxt, detection_flag, user_scaling_mode, + user_sampling_iteration, 100 * toleration, enable_power_of_2) print 'Sampling done' print 'Generating the FP32 accuracy...' top_1 = get_the_accuracy(caffe_bin_path, model, user_input_weights, user_input_iterations, detection_flag, target_blob_name) print 'FP32 accuracy is: {}'.format(top_1) tuning_quantized_topology(top_1, quantized_prototxt, caffe_bin_path, user_input_weights, user_input_iterations, - enable_floating_point, toleration, detection_flag, target_blob_name) + enable_power_of_2, toleration, detection_flag, target_blob_name) print 'Updated prototxt {} is generated.'.format(quantized_prototxt) diff --git a/scripts/install_deps.sh b/scripts/install_deps.sh index 0bf6e3f5b..b3bab9bb3 100755 --- a/scripts/install_deps.sh +++ b/scripts/install_deps.sh @@ -24,7 +24,7 @@ function usage function check_os { echo "Check OS and the version..." - + centos_ver_file="/etc/centos-release" if [ -f $centos_ver_file ]; then os="centos" @@ -65,11 +65,11 @@ function is_sudoer function install_python_deps { - eval $command_prefix pip install --upgrade pip + pip install --user --upgrade pip pushd $root_dir/python >/dev/null for req in $(cat requirements.txt) pydot; do - eval $command_prefix pip install $req + pip install --user $req done popd >/dev/null } @@ -101,11 +101,11 @@ function install_deps function install_python_deps_multinode { - ansible all -m shell -a "$command_prefix pip install --upgrade pip" + ansible all -m shell -a "pip install --user --upgrade pip" pushd $root_dir/python >/dev/null for req in $(cat requirements.txt) pydot; do - ansible all -m shell -a "$command_prefix pip install $req" + ansible all -m shell -a "pip install --user $req" done popd >/dev/null @@ -152,7 +152,7 @@ function install_deps_multinode ansible ourcluster -m ping if [ "$os" == "centos" ]; then - ansible all -m shell -a "$package_installer install python-devel boost boost-devel numpy numpy-devel gflags gflags-devel glog glog-devel protobuf protobuf-devel hdf5 hdf5-devel lmdb lmdb-devel leveldb leveldb-devel snappy-devel opencv opencv-devel scipy" + ansible all -m shell -a "$package_installer install python-devel boost boost-devel numpy numpy-devel gflags gflags-devel glog glog-devel protobuf protobuf-devel hdf5 hdf5-devel lmdb lmdb-devel leveldb leveldb-devel snappy-devel opencv opencv-devel scipy" elif [ "$os" == "ubuntu" ]; then ansible all -m shell -a "$package_installer install pkg-config libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler" ansible all -m shell -a "$package_installer install --no-install-recommends libboost-all-dev" diff --git a/scripts/obtain_optimal_batch_size.py b/scripts/obtain_optimal_batch_size.py new file mode 100644 index 000000000..bbb5407e6 --- /dev/null +++ b/scripts/obtain_optimal_batch_size.py @@ -0,0 +1,159 @@ +import subprocess +import argparse +import re +import os +import time +import logging + +class OptimalBS(object): + '''Search for optimal batch size on a specified model file''' + def __init__(self, main_args): + '''init func''' + self.model_file = main_args.model_file + self.min_bs = main_args.min_bs + self.max_bs = main_args.max_bs + self.iterations = main_args.iterations + self.dummy_use = main_args.dummy_data_use + current_time = time.strftime("%Y%m%d%H%M%S") + logging.basicConfig(filename = 'result-optimal_batch_size-{}.log'.format(current_time),level = logging.INFO) + self.check_parameters() + + def check_parameters(self): + '''check if parameters available''' + if not os.path.isfile(self.model_file): + logging.exception('model file {} does not exist, please specify it.'.format(model_file)) + if self.min_bs > self.max_bs: + logging.exception('max bs: {} smaller than min bs: {}.'.format(max_bs, min_bs)) + + def _gen_new_model_file_name(self, new_bs): + '''obtain new model file name''' + model_path = os.path.dirname(self.model_file) + model_file_name = os.path.basename(self.model_file) + new_model_file_name = '_'.join([new_bs, model_file_name]) + new_model_file = '/'.join([model_path, new_model_file_name]) + return new_model_file + + def gen_model_with_new_bs(self, new_bs): + '''return model file with new batch size''' + new_bs = str(new_bs) + return self._gen_new_dummy_model(new_bs) if self.dummy_use else self._gen_new_real_model(new_bs) + + def _gen_new_real_model(self, new_bs): + '''return new model with real data input''' + new_model_file = self._gen_new_model_file_name(new_bs) + batch_size_pattern = re.compile("^\s+batch_size:.*") + bn_stats_batch_size_pattern = re.compile(".*bn_stats_batch_size:.*") + # we only care about train phase batch size + batch_size_cnt = 1 + with open(self.model_file, 'r') as src_f, open(new_model_file, 'w') as dst_f: + cnt = 0 + for line in src_f.readlines(): + if re.match(batch_size_pattern, line) and cnt < batch_size_cnt: + line = re.sub('[0-9]+', new_bs, line, count = 1) + cnt += 1 + #consider bn_stats_batch_size field + if re.match(bn_stats_batch_size_pattern, line): + line = re.sub('[0-9]+', new_bs, line, count = 1) + dst_f.write(line) + if cnt < batch_size_cnt: + logging.exception("Error: can't find batch size pattern within the model file {}.".format(self.model_file)) + return new_model_file + + def _gen_new_dummy_model(self, new_bs): + '''return new model with dummy data input''' + new_model_file = self._gen_new_model_file_name(new_bs) + shape_pattern = re.compile(".*shape:.*") + dim_pattern = re.compile(".*dim:.*") + # we only care about train phase batch size + shape_cnt = 2 + dim_cnt = 0 + with open(self.model_file, 'r') as src_f, open(new_model_file, 'w') as dst_f: + cnt = 0 + for line in src_f.readlines(): + if re.match(shape_pattern, line): + cnt += 1 + dim_cnt = 0 + if re.match(dim_pattern, line) and cnt <= shape_cnt and dim_cnt == 0: + line = re.sub('[0-9]+', new_bs, line, count = 1) + dim_cnt += 1 + dst_f.write(line) + if cnt < shape_cnt: + logging.exception("Error: can't find batch size pattern within the model file {}.".format(self.model_file)) + return new_model_file + + def calculate_fps(self, train_log_file, bs): + '''calculate fps on train logs generated by model file with new bs''' + if not os.path.isfile(train_log_file): + logging.exception("Error: traing log file {} does not exist...".format(traing_log_file)) + average_time = '' + with open(train_log_file, 'r') as f: + average_fwd_bwd_time_pattern = re.compile(".*Average Forward-Backward:.*") + for line in f.readlines(): + if re.match(average_fwd_bwd_time_pattern, line): + average_time = line.split()[-2] + break + if average_time == "": + logging.exception("Error: can't find average forward-backward time within logs, please check logs under: {}".format(train_log_file)) + average_time = float(average_time) + speed = float(bs) * 1000.0 / average_time + logging.info("bs: {}, benchmark speed: {} images/sec".format(str(bs), str(speed))) + return speed + + def exec_command_and_show(self, exec_command): + '''execute shell command and print it out''' + def _exec_command_and_iter_show(cmd): + out = subprocess.Popen(cmd, shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines = True) + for stdout_line in iter(out.stdout.readline, ''): + yield stdout_line + return_code = out.wait() + if return_code: + raise subprocess.CalledProcessError(return_code, cmd) + for line in _exec_command_and_iter_show(exec_command): + print line + + def obtain_fps(self, bs): + '''obtain fps on model_file with new batch size''' + caffe_root = os.path.dirname(os.path.dirname(__file__)) + caffe_tool = caffe_root + 'build/tools/caffe' + mode = 'time' + current_time = time.strftime("%Y%m%d%H%M%S") + train_log_file = 'result-train-bs{}-{}.log'.format(str(bs), current_time) + new_model_file = self.gen_model_with_new_bs(bs) + exec_command = ' '.join([caffe_tool, mode, '--model', new_model_file, '--iterations', str(self.iterations)]) + exec_command += ' 2>&1 | tee {}'.format(train_log_file) + self.exec_command_and_show(exec_command) + fps = self.calculate_fps(train_log_file, bs) + os.remove(train_log_file) + os.remove(new_model_file) + return fps + + def find_optimal_bs(self): + '''find optimal bs for model file and return it''' + optimal_bs, max_fps = self.min_bs, self.obtain_fps(self.min_bs) + for bs in xrange(self.min_bs + 1, self.max_bs + 1): + fps = self.obtain_fps(bs) + if fps > max_fps: + optimal_bs, max_fps = bs, fps + return optimal_bs + +def parse_args(): + '''parse arguments''' + description = 'Used to obtain optimal batch size for specified model file.' + arg_parser = argparse.ArgumentParser(description = description) + arg_parser.add_argument('--model_file', help = 'model prototxt file you specified') + arg_parser.add_argument('--min_bs', type = int, help = 'min batch size you expect') + arg_parser.add_argument('--max_bs', type = int, help = 'max batch size you expect') + arg_parser.add_argument('--iterations', type = int, default = 100, help = 'how many iterations to run for caffe time') + arg_parser.add_argument('--dummy_data_use', action = 'store_true', help = "dummy_data_use, if set 'True', will use dummy data as input; else if set 'False', will use other data source like lmdb for neural network as input") + args = arg_parser.parse_args() + return args + +def main(): + '''main routine''' + main_args = parse_args() + optimal_bs_finder = OptimalBS(main_args) + optimal_bs = optimal_bs_finder.find_optimal_bs() + logging.info('optimal batch size is: {}'.format(optimal_bs)) + +if __name__ == '__main__': + main() diff --git a/scripts/run_benchmark.py b/scripts/run_benchmark.py index 3da1f5434..576f684b8 100755 --- a/scripts/run_benchmark.py +++ b/scripts/run_benchmark.py @@ -7,38 +7,39 @@ import socket import logging -topology_list = ["alexnet", "googlenet", "googlenet_v2", "resnet_50", 'all'] class CaffeBenchmark(object): '''Used to do caffe benchmarking''' - def __init__(self, topology, bkm_batch_size, host_file = "", network = "", tcp_netmask = "", engine = "", dummy_data_use = True, caffe_bin = "", scal_test = True): + def __init__(self, bench_params): '''params initialization''' - self.topology = topology - self.host_file = host_file - self.network = network - self.tcp_netmask = tcp_netmask - self.dummy_data_use = dummy_data_use - self.engine = engine - self.caffe_bin = caffe_bin - self.scal_test = scal_test + self.topology = bench_params.topology + self.host_file = bench_params.host_file + self.network = bench_params.network + self.tcp_netmask = bench_params.tcp_netmask + self.dummy_data_use = bench_params.dummy_data_use + self.engine = bench_params.engine + self.caffe_bin = bench_params.caffe_bin + self.scal_test = bench_params.scal_test self.num_nodes = 1 - self.cpu_model = "skx" + self.cpu_model = 'skx' # flag used to mark if we have detected which cpu model we're using self.unknown_cpu = False self.iterations = 100 self.caffe_root = os.path.dirname(os.path.dirname(__file__)) # model template path - self.model_path = self.caffe_root + "models/intel_optimized_models" + self.model_path = os.path.join(self.caffe_root, "models/intel_optimized_models/benchmark") # specific script used to run intelcaffe - self.caffe_run_script = self.caffe_root + "scripts/run_intelcaffe.sh" - self.bkm_batch_size = bkm_batch_size + self.caffe_run_script = os.path.join(self.caffe_root, "scripts/run_intelcaffe.sh") + self.bkm_batch_size = bench_params.bkm_batch_size + self.support_topologies = self.bkm_batch_size.keys() + self.support_topologies.append('all') self.check_parameters() current_time = time.strftime("%Y%m%d%H%M%S") logging.basicConfig(filename = 'result-benchmark-{}.log'.format(current_time),level = logging.INFO) def is_supported_topology(self): '''check if input topology is supported''' - if self.topology not in topology_list: - logging.exception("The topology you specified as {} is not supported. Supported topologies are {}".format(self.topology, topology_list)) + if self.topology not in self.support_topologies: + logging.exception("The topology you specified as {} is not supported. Supported topologies are {}".format(self.topology, self.support_topologies)) def calculate_numnodes(self): '''calculate current using nodes''' @@ -65,7 +66,6 @@ def _exec_command_and_iter_show(cmd): for line in _exec_command_and_iter_show(cmd): print line - def detect_cpu(self): '''check which IA platform currently using''' command_name = "lscpu | grep 'Model name' | awk -F ':' '{print $2}'" @@ -88,21 +88,21 @@ def detect_cpu(self): self.unknown_cpu = True logging.info("Can't detect which cpu model currently using, will use default settings, which may not be the optimal one.") - def obtain_model_file(self, model): - '''change original model file batch size to bkm batch size''' + def gen_model_file(self, model): + '''generate model file with new batch size which equal to bkm batch size''' prototxt_file = "train_val_dummydata.prototxt" if self.dummy_data_use else "train_val.prototxt" - dst_model_file = "/".join([self.model_path, model, '-'.join([self.cpu_model, prototxt_file])]) + dst_model_file = os.path.join(self.model_path, model, '-'.join([self.cpu_model, prototxt_file])) if os.path.isfile(dst_model_file): os.remove(dst_model_file) - src_model_file = "/".join([self.model_path, model, prototxt_file]) + src_model_file = os.path.join(self.model_path, model, prototxt_file) if not os.path.isfile(src_model_file): logging.exception("template model file {} doesn't exist.".format(src_model_file)) batch_size_pattern = re.compile(".*shape:.*") if self.dummy_data_use else re.compile("^\s+batch_size:.*") # we only care about train phase batch size for benchmarking batch_size_cnt = 2 if self.dummy_data_use else 1 - if model not in self.bkm_batch_size or self.cpu_model not in self.bkm_batch_size[model]: + if model not in self.bkm_batch_size or not self.scal_test and self.cpu_model not in self.bkm_batch_size[model]: logging.exception("Can't find batch size of topology {} and cpu model {} within batch size table".format(model, self.cpu_model)) - new_batch_size = self.bkm_batch_size[model][self.cpu_model] + new_batch_size = self.bkm_batch_size[model] if self.scal_test else self.bkm_batch_size[model][self.cpu_model] with open(src_model_file, 'r') as src_f, open(dst_model_file, 'w') as dst_f: cnt = 0 for line in src_f.readlines(): @@ -113,16 +113,16 @@ def obtain_model_file(self, model): dst_f.write(line) return dst_model_file - def obtain_solver_file(self, model): - '''obtain suitable solver file for training benchmark''' + def gen_solver_file(self, model): + '''generate suitable solver file for training benchmark''' solver_prototxt_file = "solver_dummydata.prototxt" if self.dummy_data_use else "solver.prototxt" - dst_solver_file = "/".join([self.model_path, model, '-'.join([self.cpu_model, solver_prototxt_file])]) + dst_solver_file = os.path.join(self.model_path, model, '-'.join([self.cpu_model, solver_prototxt_file])) if os.path.isfile(dst_solver_file): os.remove(dst_solver_file) - src_solver_file = "/".join([self.model_path, model, solver_prototxt_file]) + src_solver_file = os.path.join(self.model_path, model, solver_prototxt_file) if not os.path.isfile(src_solver_file): logging.exception("template solver file {} doesn't exist.".format(src_solver_file)) - dst_model_file = self.obtain_model_file(model) + dst_model_file = self.gen_model_file(model) max_iter = "200" display_iter = "1" net_path_pattern = re.compile(".*net:.*") @@ -144,10 +144,10 @@ def run_specific_model(self, model): '''run the topology you specified''' self.calculate_numnodes() if self.num_nodes == 1: - model_file = self.obtain_model_file(model) + model_file = self.gen_model_file(model) exec_command = ' '.join([self.caffe_run_script, '--model_file', model_file, '--mode time', '--iteration', str(self.iterations), '--benchmark none']) else: - solver_file = self.obtain_solver_file(model) + solver_file = self.gen_solver_file(model) exec_command = ' '.join([self.caffe_run_script, '--hostfile', self.host_file, '--solver', solver_file, '--network', self.network, '--benchmark none']) if self.network == "tcp": exec_command += " --netmask {}".format(self.tcp_netmask) @@ -183,7 +183,7 @@ def obtain_intelcaffe_log(self): caffe_log_file = "-".join(["outputCluster", self.cpu_model, str(self.num_nodes) + '.txt']) else: caffe_log_file = "-".join(["outputCluster", "unknown", str(self.num_nodes) + '.txt']) - intelcaffe_log = "/".join([result_dir, caffe_log_file]) + intelcaffe_log = os.path.join(result_dir, caffe_log_file) logging.info('intelcaffe log: %s' % intelcaffe_log) return intelcaffe_log @@ -226,12 +226,11 @@ def obtain_batch_size(self): if not os.path.isfile(log_file): logging.exception("Error: log file {} does not exist...".format(log_file)) with open(log_file, 'r') as f: - batch_size_pattern_time = re.compile(".*SetMinibatchSize.*") batch_size_pattern_dummy = re.compile(".*dim:.*") - batch_size_pattern_real = re.compile("^\s+batch_size:.*") + batch_size_pattern_real = re.compile(".*\s+batch_size:.*") batch_size = '' for line in f.readlines(): - if re.match(batch_size_pattern_time, line) or re.match(batch_size_pattern_real, line) or re.match(batch_size_pattern_dummy, line): + if re.match(batch_size_pattern_real, line) or re.match(batch_size_pattern_dummy, line): batch_size = line.split()[-1] break if batch_size == '': @@ -276,9 +275,8 @@ def manipulate_host_file(self): self.hosts[0], self.hosts[index] = self.hosts[index], self.hosts[0] break - - def obtain_host_file(self, num_nodes): - '''obtain suitable host file to do scaling test''' + def gen_host_file(self, num_nodes): + '''generate suitable host file to do scaling test''' dst_host_file = 'scal_hostfile' with open(dst_host_file, 'w') as dst_f: for i in xrange(num_nodes): @@ -294,7 +292,7 @@ def run_scal_test(self, model): origin_hostfile = self.host_file fps_table = {} while num_nodes > 0: - self.host_file = self.obtain_host_file(num_nodes) + self.host_file = self.gen_host_file(num_nodes) self.run_specific_model(model) fps_table[num_nodes] = self.speed num_nodes /= 2 @@ -320,7 +318,7 @@ def run_benchmark(self): self.detect_cpu() logging.info("Cpu model: {}".format(self.model_string)) if self.topology == 'all': - for model in topology_list: + for model in self.support_topologies: if model == 'all': continue logging.info("--{}".format(model)) @@ -343,26 +341,39 @@ def check_parameters(self): if self.network == "tcp" and self.tcp_netmask == "": logging.exception("Error: need to specify tcp network's netmask") +class BenchmarkParams(object): + '''encapsulate benchmark parameters here''' + def __init__(self, config_file): + '''initialize benchmark parameters through a config file''' + if config_file == '' or not os.path.isfile(config_file): + logging.exception("Cant't find config file {}.".format(config_file)) + with open(config_file, 'r') as f: + try: + config = json.load(f) + except Exception: + logging.exception("Error: check if your json config file is correct.") + self.topology = config['params']['topology'] + self.host_file = config['params']['hostfile'] + self.network = config['params']['network'] + self.tcp_netmask = config['params']['netmask'] + self.engine = config['params']["engine"] + self.dummy_data_use = config['params']['dummy_data_use'] + self.scal_test = config['params']['scal_test'] + self.caffe_bin = config['params']['caffe_bin'] + self.bkm_batch_size = config['scal_batch_size_table'] if self.scal_test else config['perf_batch_size_table'] + +def parse_args(): + '''parse arguments''' + description = 'Used to run intelcaffe throughput performance or scaling efficiency benchmarking.' + arg_parser = argparse.ArgumentParser(description = description) + arg_parser.add_argument('-c', '--configfile', default = 'scripts/benchmark_config_default.json', help = "config file which contains the parameters you want and the batch size you want to use on all topologies and platforms. Please check https://github.com/intel/caffe/wiki/Run-benchmark to see how to use it, default is 'scripts/benchmark_config_default.json'") + return arg_parser.parse_args() + def main(): '''main routine''' - arg_parser = argparse.ArgumentParser(description = "Used to run intelcaffe training benchmark") - arg_parser.add_argument('--configfile', help = "config file which contains the parameters you want and the batch size you want to use on all topologies and platforms") - main_args = arg_parser.parse_args() - if main_args.configfile == '' or not os.path.isfile(main_args.configfile): - logging.exception("Cant't find config file {}.".format(main_args.configfile)) - with open(main_args.configfile, 'r') as f: - config = json.load(f) - topology = config['params']['topology'] - host_file = config['params']['hostfile'] - network = config['params']['network'] - tcp_netmask = config['params']['netmask'] - engine = config['params']["engine"] - dummy_data_use = config['params']['dummy_data_use'] - scal_test = config['params']['scal_test'] - caffe_bin = config['params']['caffe_bin'] - bkm_batch_size = config['batch_size_table'] - - caffe_benchmark = CaffeBenchmark(topology, bkm_batch_size, host_file, network, tcp_netmask, engine, dummy_data_use, caffe_bin, scal_test) + main_args = parse_args() + bench_params = BenchmarkParams(main_args.configfile) + caffe_benchmark = CaffeBenchmark(bench_params) caffe_benchmark.run_benchmark() if __name__ == "__main__": diff --git a/scripts/run_benchmark.sh b/scripts/run_benchmark.sh deleted file mode 100755 index 9ee320236..000000000 --- a/scripts/run_benchmark.sh +++ /dev/null @@ -1,327 +0,0 @@ -#!/bin/bash - -# model path -model_path="models/intel_optimized_models" - -# network topology, support alexnet, googlenet, googlenet v2, resnet50 -# if you set it as 'all', then it will benchmark all supported topologies. -topology="" -topology_list="alexnet googlenet googlenet_v2 resnet_50 all" -declare -a model_list=("alexnet" "googlenet" "googlenet_v2" "resnet_50") - -# it's assigned by detect_cpu -cpu_model="skx" - -# flag used to mark if we have detected which cpu model we're using -unknown_cpu=0 - -# specify default engine for running caffe benchmarks -engine="" - -# default support single node -numnodes=1 - -# intelcaffe_log_file obtain outputs of 'run_intelcaffe' -intelcaffe_log_file="" - -# specific script used to run intelcaffe -caffe_run_script="./scripts/run_intelcaffe.sh" - -# path of caffe binary -caffe_bin="" - -# iterations to run benchmark -iterations=100 - -# hostfile needed to run multinodes mode benchmark -host_file="" - -# network parameters -network="opa" -tcp_netmask="" - - -data_source="dummy" - -function usage -{ - script_name=$0 - echo "Usage:" - echo " $script_name --topology network_topology [--hostfile host_file] [--network opa/tcp] [--netmask tcp_netmask]" - echo " [--data_source lmdb/dummy] [--caffe_bin caffe_bin_path] [--engine engine]" - echo "" - echo " Parameters:" - echo " topology: network topology used to benchmark, support alexnet, googlenet, googlenet_v2, resnet_50" - echo " , by specifying it as 'all', we run all supported topologies." - echo " hostfile: host_file needed in multinodes mode, should contain list of nodes ips or hostnames" - echo " network: opa(default), tcp, used in multinodes mode to specify the network type" - echo " netmask: only used if network is tcp, set as the net work card name within your network" - echo " data_source: dummy(default), lmdb. data source for neural network." - echo " caffe_bin_path: specify path of caffe binary." - echo " engine: empty value(default), MKL2017 and MKLDNN. Default empty value" - echo " is to use default engine in Intel Caffe." - echo "" -} - -function is_supported_topology -{ - echo "" - if [[ "$topology_list" =~ (^|[[:space:]])"$topology"($|[[:space:]]) ]]; then - echo "Topology: ${topology}" - else - echo "$topology is not supported, please check the usage." - usage - exit 1 - fi -} - -function calculate_numnodes -{ - if [[ $host_file != "" ]]; then - host_list=(`cat $host_file | sort | uniq`) - numnodes=${#host_list[@]} - if [ $numnodes -eq 0 ]; then - echo "Error: empty host list. Exit." - exit 1 - fi - fi - echo "Number of nodes: $numnodes" -} - -function detect_cpu -{ - # detect cpu model - model_string=`lscpu | grep "Model name" | awk -F ':' '{print $2}'` - if [[ $model_string == *"Phi"* ]]; then - if [[ $model_string =~ 72(1|3|5|9)0 ]]; then - cpu_model="knl" - elif [[ $model_string == *"72"* ]]; then - cpu_model="knm" - else - unknown_cpu=1 - echo "Can't detect which cpu model currently using, will use default settings, which may not be the optimal one." - fi - else - model_num=`echo $model_string | awk '{print $4}'` - if [[ $model_num =~ ^[8|6|5|4|3]1 ]]; then - cpu_model="skx" - elif [[ $model_num =~ ^E5-[4|2|1]6|^E7-[8|4]8|^E3-12|^D[-]?15 ]]; then - cpu_model="bdw" - else - unknown_cpu=1 - echo "Can't detect which cpu model currently using, will use default settings, which may not be the optimal one." - fi - fi -} - -function run_specific_model -{ - if [ $numnodes -eq 1 ]; then - if [ "$data_source" == "dummy" ]; then - model_file="models/intel_optimized_models/${model}/${cpu_model}/train_val_dummydata.prototxt" - else - model_file="models/intel_optimized_models/${model}/${cpu_model}/train_val.prototxt" - fi - exec_command="${caffe_run_script} --model_file ${model_file} --mode time --iteration ${iterations} --benchmark none" - else - if [ "$data_source" == "dummy" ]; then - solver_file="models/intel_optimized_models/${model}/${cpu_model}/solver_dummydata.prototxt" - else - solver_file="models/intel_optimized_models/${model}/${cpu_model}/solver.prototxt" - fi - - exec_command="${caffe_run_script} --hostfile $host_file --solver $solver_file --network $network --benchmark none" - if [ $network == "tcp" ]; then - exec_command+=" --netmask $tcp_netmask" - fi - fi - - if [ "$engine" != "" ]; then - exec_command+=" --engine $engine" - fi - if [ "$caffe_bin" != "" ]; then - exec_command+=" --caffe_bin $caffe_bin" - fi - - # Result file to save detailed run intelcaffe results - if [ $unknown_cpu -eq 0 ]; then - result_log_file="result-${cpu_model}-${model}-`date +%Y%m%d%H%M%S`.log" - else - result_log_file="result-unknown-${model}-`date +%Y%m%d%H%M%S`.log" - fi - $exec_command 2>&1 | tee $result_log_file - obtain_intelcaffe_log $result_log_file - calculate_images_per_second $intelcaffe_log_file -} - -function obtain_intelcaffe_log -{ - echo "Result_log_file : $1" - if [ -f $1 ]; then - result_dir_line=`cat $1 | grep "Result folder:"` - if [[ result_dir_line = "" ]]; then - echo "Couldn't find result folder within file $1" - exit 1 - fi - result_dir=`echo $result_dir_line | awk -F ' ' '{print $(NF)}'` - if [ $unknown_cpu -eq 0 ]; then - caffe_log_file="outputCluster-${cpu_model}-${numnodes}.txt" - else - caffe_log_file="outputCluster-unknown-${numnodes}.txt" - fi - intelcaffe_log_file="${result_dir}/${caffe_log_file}" - else - echo "Couldn't see result log file $result_log_file" - exit 1 - fi -} - -function obtain_average_fwd_bwd_time -{ - result_file=$1 - if [ ! -f $result_file ]; then - echo "Error: result file $result_file does not exist..." - exit 1 - fi - - if [ $numnodes -eq 1 ]; then - average_time_line=`cat $result_file | grep "Average Forward-Backward"` - if [ "$average_time_line" = "" ]; then - echo "running intelcaffe failed, please check logs under: $result_file" - exit 1 - fi - average_time=`echo $average_time_line | awk -F ' ' '{print $(NF-1)}'` - else - start_iteration=100 - iteration_num=100 - total_time=0 - deltaTimeList=`cat $result_file | grep "DELTA TIME" | tail -n "+${start_iteration}" | head -n ${iteration_num} | awk '{print $(NF-1)}'` - if [ "$deltaTimeList" = "" ]; then - echo "running intelcaffe failed, please check logs under: $result_file" - exit 1 - fi - - for delta_time in ${deltaTimeList} - do - iteration_time=`echo "$delta_time" | bc` - total_time=`echo "$total_time+$iteration_time" | bc` - done - - average_time=`echo "$total_time*1000/$iteration_num" | bc` - fi - echo "average time: ${average_time}" -} - -function obtain_batch_size -{ - log_file=$1 - if [ ! -f $log_file ]; then - echo "Error: log file $log_file does not exist..." - exit 1 - fi - batch_size=`cat $log_file | grep shape | sed -n "3, 1p" | awk '{print $(NF-4)}'` - batch_size_opt=`cat $log_file | grep SetMinibatchSize | sed -n "1, 1p" | awk '{print $(NF)}'` - if [[ $batch_size_opt != "" ]]; then - batch_size=$batch_size_opt - fi - echo "batch size: $batch_size" -} - -function calculate_images_per_second -{ - obtain_batch_size $1 - obtain_average_fwd_bwd_time $1 - if [ $numnodes -eq 1 ]; then - speed=`echo "$batch_size*1000/$average_time" | bc` - else - speed=`echo "$batch_size*$numnodes*1000/$average_time" | bc` - fi - echo "benchmark speed : $speed images/sec" -} - - -function run_benchmark -{ - detect_cpu - calculate_numnodes - echo "Cpu model : $model_string" - if [[ $topology = "all" ]]; then - for ((i=0; i<${#model_list[@]}; i++)) - do - echo "--${model_list[$i]}" - model=${model_list[$i]} - run_specific_model - done - else - model=$topology - run_specific_model - fi -} - -function check_parameters -{ - if [[ $topology = "" ]]; then - echo "Error: topology is not specified." - usage - exit 1 - fi - - if [[ $host_file != "" ]]; then - if [ "$network" = "tcp" -a "$tcp_netmask" = "" ]; then - echo "Error: need to specify tcp network's netmask" - usage - exit 1 - fi - fi - is_supported_topology -} - -if [[ $# -le 1 ]]; then - usage - exit 0 -fi - -while [[ $# -ge 1 ]] -do - key="$1" - case $key in - --topology) - topology="$2" - shift - ;; - --hostfile) - host_file="$2" - shift - ;; - --network) - network="$2" - shift - ;; - --netmask) - tcp_netmask="$2" - shift - ;; - --engine) - engine="$2" - shift - ;; - --data_source) - data_source="$2" - shift - ;; - --caffe_bin) - caffe_bin=$2 - shift - ;; - *) - echo "Unknown option: $key" - usage - exit 1 - ;; - esac - shift -done - -check_parameters - -run_benchmark diff --git a/scripts/run_intelcaffe.sh b/scripts/run_intelcaffe.sh index 1761f6e92..c2d80a9bf 100755 --- a/scripts/run_intelcaffe.sh +++ b/scripts/run_intelcaffe.sh @@ -55,6 +55,10 @@ mpibench_param="allreduce" script_dir=$(dirname $0) caffe_bin="" +msg_priority="off" +msg_priority_threshold=10000 + +mpi_iallreduce_algo="" function usage { @@ -73,6 +77,8 @@ function usage echo " [--mpibench_param mpibench_param]" echo " [--caffe_bin caffe_binary_path]" echo " [--cpu cpu_model]" + echo " [--msg_priority on/off] [--msg_priority_threshold 10000]" + echo " [--mpi_iallreduce_algo mpi_iallreduce_algo]" echo "" echo " Parameters:" echo " hostfile: host file includes list of nodes. Only used if you're running with multinode" @@ -98,6 +104,9 @@ function usage echo " included in supported list. Value: bdw, knl, skx and knm." echo " bdw - Broadwell, knl - Knights Landing, skx - Skylake," echo " knm - Knights Mill." + echo " msg_priority: off (default). Enable/disable message priority in MLSL." + echo " msg_priority_threshold: 10000 (default), if message priority is on." + echo " mpi_iallreduce_algo: adjust MPI iallreduce algorithms for synchronizing gradients in nodes." echo "" } @@ -105,37 +114,63 @@ declare -a cpu_list=("Intel Xeon E7-88/48xx, E5-46/26/16xx, E3-12xx, D15/D-15 (B "Intel Xeon Phi 7210/30/50/90 (Knights Landing)" "Intel Xeon Platinum 81/61/51/41/31xx (Skylake)") +# the flag is true, while the machine to execute this script is one of machines included in hostfile +# otherwise, we need to run caffe on remote machine by mpirun command +is_local_run=1 + +# check localhost is included in hostfile +function is_localhost_in_hostfile +{ + local_hostname=`hostname` + + host_file_=$1 + if [ "$host_file_" != "" ]; then + host_list=( `cat $host_file_ | sort -V | uniq ` ) + for host in ${host_list[@]} + do + hostname=`ssh $host "hostname"` + if [ $hostname == $local_hostname ]; then + return 1 + fi + done + return 0 + fi + + return 1 +} + function detect_cpu { # detect cpu model model_string=`lscpu | grep "Model name" | awk -F ':' '{print $2}'` + cpu_model_="skx" + if [[ $model_string == *"Phi"* ]]; then if [[ $model_string =~ 72(1|3|5|9)0 ]]; then - cpu_model="knl" + cpu_model_="knl" elif [[ $model_string == *"72"* ]]; then - cpu_model="knm" + cpu_model_="knm" else - cpu_model="unknown" - echo "CPU model :$model_string is unknown." - echo " Use default settings, which may not be the optimal one." + cpu_model_="unknown" fi else model_num=`echo $model_string | awk '{print $4}'` if [[ $model_num =~ ^[8|6|5|4|3]1 ]]; then - cpu_model="skx" + cpu_model_="skx" elif [[ $model_num =~ ^E5-[4|2|1]6|^E7-[8|4]8|^E3-12|^D[-]?15 ]]; then - cpu_model="bdw" + cpu_model_="bdw" else - cpu_model="unknown" - echo "CPU model :$model_string is unknown." - echo " Use default settings, which may not be the optimal one." + cpu_model_="unknown" fi fi + echo ${cpu_model_} } function set_numa_node { - check_dependency numactl + # this cannot be replaced with check_dependency function, + # since it may be called via ssh + which numactl >/dev/null 2>&1 if [ $? -ne 0 ]; then return fi @@ -143,13 +178,12 @@ function set_numa_node # detect numa mode: cache and flat mode for KNL numa_node=($(numactl -H | grep "available" | awk -F ' ' '{print $2}')) if [ $numa_node -eq 1 ]; then - echo " NUMA configuration: Cache mode." # cache mode, use numa node 0 - numanode=0 + numanode_=0 else - echo " NUMA configuration: Flat mode." - numanode=1 + numanode_=1 fi + echo ${numanode_} } @@ -178,7 +212,7 @@ function execute_command exec_command="$xeonbin_" fi - if [ ${numnodes} -gt 1 ]; then + if [ ${numnodes} -gt 1 ] || [ $is_local_run -ne 1 ]; then # Produce the configuration file for mpiexec. # Each line of the config file contains a # host, environment, binary name. cfile_=$result_dir_/nodeconfig-${cpu_model}-${numnodes}.txt @@ -199,7 +233,7 @@ function execute_command $sensors_bin >$sensor_log_file fi - if [ ${numnodes} -eq 1 ]; then + if [ ${numnodes} -eq 1 ] && [ $is_local_run -eq 1 ]; then time GLOG_minloglevel=0 $exec_command 2>&1 | tee ${log_file} else exec_command="-l -configfile $cfile_" @@ -367,7 +401,10 @@ function test_ssh_connection function get_model_fname { solver_file_=$1 - model_file_=$(grep -w "net:" $solver_file_ | head -n 1 | awk -F ':' '{print $2}' | sed 's/\"//g' | sed 's/\r//g') + model_file_=$(grep -w "net:" $solver_file_ | head -n 1 | awk -F ':' '{print $2}' | sed 's/\"//g' | sed 's/\r//g' | tr -d ' ') + if [ "$model_file_" != "" ] && [[ "$model_file_" != /* ]]; then + model_file_=$root_dir/$model_file_ + fi echo "$(echo $model_file_)" } @@ -504,6 +541,18 @@ do cpu_model=$2 shift ;; + --msg_priority) + msg_priority=$2 + shift + ;; + --msg_priority_threshold) + msg_priority_threshold=$2 + shift + ;; + --mpi_iallreduce_algo) + mpi_iallreduce_algo=$2 + shift + ;; *) echo "Unknown option: $key" usage @@ -520,9 +569,25 @@ do echo " ${cpu_list[$i]}" done +head_node="" +if [ "$host_file" != "" ]; then + is_localhost_in_hostfile $host_file + is_local_run=$? + head_node=`cat $host_file | head -n 1` +fi + # if cpu model is not specified in command, detect cpu model by "lscpu" command if [ "$cpu_model" == "" ]; then - detect_cpu + if [ $is_local_run -eq 1 ]; then + cpu_model=`detect_cpu` + else + # detect cpu on remote machine + cpu_model=`ssh $head_node "$(typeset -f detect_cpu);detect_cpu"` + fi +fi +if [ "$cpu_model" == "unknown" ]; then + echo "CPU model is unknown." + echo " Use default settings, which may not be the optimal one." fi echo "" @@ -582,7 +647,12 @@ fi if [ "$model_file" != "" ]; then grep "backend" $model_file | grep -i "LMDB" >/dev/null if [ $? -eq 0 ]; then - check_lmdb_files $model_file + if [ $is_local_run -eq 1 ]; then + check_lmdb_files $model_file + else + # check lmdb on remote machine + ssh $head_node "$(typeset -f check_lmdb_files);cd $root_dir; check_lmdb_files $model_file" + fi fi fi @@ -597,19 +667,29 @@ fi # Names to configfile, binary (executable) files # # Add check for host_file's existence to support single node -if [[ $host_file != "" ]]; then +if [ "$host_file" != "" ]; then nodenames=( `cat $host_file | sort -V | uniq ` ) if [ ${#nodenames[@]} -eq 0 ]; then echo "Error: empty host file! Exit." exit 0 fi numnodes=${#nodenames[@]} -fi -# test connection between nodes via ssh -test_ssh_connection $host_file + # test connection between nodes via ssh + test_ssh_connection $host_file +fi -set_numa_node +if [ $is_local_run -eq 1 ]; then + numanode=`set_numa_node` +else + # check numa config + numanode=`ssh $head_node "$(typeset -f set_numa_node); set_numa_node"` +fi +if [ $numanode -eq 0 ]; then + echo " NUMA configuration: Cache mode." +else + echo " NUMA configuration: Flat mode." +fi if [ ! -d $result_dir ]; then echo "Create result directory: $result_dir" @@ -617,6 +697,7 @@ if [ ! -d $result_dir ]; then fi env_params="--cpu $cpu_model --debug $debug --network $network --num_mlsl_servers $num_mlsl_servers" +env_params+=" --msg_priority $msg_priority --msg_priority_threshold $msg_priority_threshold" if [ "$network" == "tcp" ]; then env_params+=" --netmask $tcp_netmask" fi @@ -627,6 +708,10 @@ if [ ${num_omp_threads} -ne 0 ]; then env_params+=" --num_omp_threads ${num_omp_threads}" fi +if [ "${mpi_iallreduce_algo}" != "" ]; then + env_params+=" --mpi_iallreduce_algo ${mpi_iallreduce_algo}" +fi + source ${script_dir}/set_env.sh $env_params if [ "${benchmark_mode}" != "none" ]; then diff --git a/scripts/set_env.sh b/scripts/set_env.sh index 9d7ca6013..d38464b0a 100755 --- a/scripts/set_env.sh +++ b/scripts/set_env.sh @@ -27,6 +27,11 @@ numservers=0 # pin internal threads to 2 CPU cores for reading data internal_thread_pin="on" +msg_priority="off" +msg_priority_threshold="" + +mpi_iallreduce_algo="" + function init_mpi_envs { if [ ${numnodes} -eq 1 ]; then @@ -56,13 +61,17 @@ function init_mpi_envs export I_MPI_FALLBACK=0 export I_MPI_DEBUG=6 + + if [ "${mpi_iallreduce_algo}" != "" ]; then + export I_MPI_ADJUST_IALLREDUCE=${mpi_iallreduce_algo} + fi } function clear_shm { clear_command="rm -rf /dev/shm/*" - check_shm_command="df -h | grep shm" + check_shm_command="df -h /dev/shm | grep shm" # TODO: check if 40G is the minimum shm size? min_shm_size=40 @@ -114,7 +123,9 @@ function set_mlsl_vars if [ -z $MLSL_ROOT ]; then # use built-in mlsl if nothing is specified in ini mlslvars_sh=`find external/mlsl/ -name mlslvars.sh` - source $mlslvars_sh + if [ -f $mlslvars_sh ]; then + source $mlslvars_sh + fi fi if [ ${num_mlsl_servers} -eq -1 ]; then @@ -131,11 +142,12 @@ function set_mlsl_vars export MLSL_NUM_SERVERS=${numservers} if [ ${numservers} -gt 0 ]; then - if [ "${cpu_model}" == "knl" ] || [ "${cpu_model}" == "knm" ]; then - listep=6,7,8,9 - else - listep=6,7 - fi + listep="6" + for ((i=7; i<${numservers}+6; i++)) + do + listep+=",$i" + done + export MLSL_SERVER_AFFINITY="${listep}" echo "MLSL_SERVER_AFFINITY: ${listep}" fi @@ -144,7 +156,17 @@ function set_mlsl_vars if [ "$debug" == "on" ]; then export MLSL_LOG_LEVEL=3 else - export MLSL_LOG_LEVEL=0 + export MLSL_LOG_LEVEL=1 + fi + + if [ "$msg_priority" == "on" ]; then + echo "Enable priority queue." + export MLSL_MSG_PRIORITY=1 + + if [ "$msg_priority_threshold" != "" ]; then + echo "Priority queue threshold: $msg_priority_threshold" + export MLSL_MSG_PRIORITY_THRESHOLD=$msg_priority_threshold + fi fi } @@ -243,6 +265,18 @@ do internal_thread_pin=$2 shift ;; + --msg_priority) + msg_priority=$2 + shift + ;; + --msg_priority_threshold) + msg_priority_threshold=$2 + shift + ;; + --mpi_iallreduce_algo) + mpi_iallreduce_algo=$2 + shift + ;; *) echo "Unknown option: $key" usage diff --git a/src/caffe/blob.cpp b/src/caffe/blob.cpp index 627735ee2..ef3e36ee5 100644 --- a/src/caffe/blob.cpp +++ b/src/caffe/blob.cpp @@ -161,6 +161,19 @@ const Dtype* Blob::cpu_diff() const { return (const Dtype*)diff_->cpu_data(); } +#ifdef CO_SIM +template +Dtype* Blob::cpu_data_cosim() const { + CHECK(data_); + return (Dtype*)data_->cpu_data_cosim(); +} +template +Dtype* Blob::cpu_diff_cosim() const { + CHECK(diff_); + return (Dtype*)diff_->cpu_data_cosim(); +} +#endif + template const Dtype* Blob::gpu_diff() const { CHECK(diff_); diff --git a/src/caffe/data_reader.cpp b/src/caffe/data_reader.cpp index 4c9ea32f0..3252ba983 100644 --- a/src/caffe/data_reader.cpp +++ b/src/caffe/data_reader.cpp @@ -177,6 +177,10 @@ DataReader::DBWrapper::DBWrapper(const LayerParameter& param) { cursor.reset(db->NewCursor()); } +DataReader::DBWrapper::~DBWrapper() { +} + + DataReader::DBShuffle::DBShuffle(const LayerParameter& param):DBWrapper(param) { CHECK(param.data_param().backend() != DataParameter_DB_LEVELDB) << "LevelDB doesn't support shuffle"; diff --git a/src/caffe/data_transformer.cpp b/src/caffe/data_transformer.cpp index e09011963..f9683215d 100644 --- a/src/caffe/data_transformer.cpp +++ b/src/caffe/data_transformer.cpp @@ -1239,7 +1239,7 @@ void DataTransformer::RandomAlterAspectRatio(const cv::Mat& img, cv::Mat CHECK(max_area_ratio >= min_area_ratio); ResizeParameter resize_param = param_.random_aspect_ratio_param().resize_param(); int attempt = 0; - while (attempt++ < 10) { + while (attempt++ < param_.random_aspect_ratio_param().max_attempt()) { float area_ratio = RandRatio(min_area_ratio, max_area_ratio, rand_num_); float aspect_ratio_change = RandRatio(min_aspect_ratio_change, 1 / min_aspect_ratio_change, rand_num_); diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index fa37e24ec..0218d9661 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -116,7 +116,7 @@ shared_ptr > GetConvolutionLayer( } #endif #ifdef MKLDNN_SUPPORTED - else if (!use_dilation && ep.isEngine("MKLDNN")) { + else if (ep.isEngine("MKLDNN")) { engine = ConvolutionParameter_Engine_MKLDNN; } #endif @@ -150,10 +150,6 @@ shared_ptr > GetConvolutionLayer( #endif #ifdef MKLDNN_SUPPORTED } else if (engine == ConvolutionParameter_Engine_MKLDNN) { - if (use_dilation) { - LOG(FATAL) << "MKLDNN doesn't support the dilated convolution at Layer " - << param.name(); - } return shared_ptr >(new MKLDNNConvolutionLayer(param)); #endif } else { diff --git a/src/caffe/layers/detection_output_layer.cpp b/src/caffe/layers/detection_output_layer.cpp index 1237731a6..3480fd36e 100644 --- a/src/caffe/layers/detection_output_layer.cpp +++ b/src/caffe/layers/detection_output_layer.cpp @@ -79,14 +79,22 @@ void DetectionOutputLayer::LayerSetUp(const vector*>& bottom, detection_output_param.save_output_param(); output_directory_ = save_output_param.output_directory(); if (!output_directory_.empty()) { - if (boost::filesystem::is_directory(output_directory_)) { + if (boost::filesystem::is_directory(output_directory_) +#ifdef USE_MLSL + && mn::is_root() == true +#endif + ) boost::filesystem::remove_all(output_directory_); - } // bug on ret val of create_dir https://svn.boost.org/trac/boost/ticket/7258 +#ifdef USE_MLSL + if(mn::is_root() == true){ +#endif boost::filesystem::create_directories(output_directory_); - if(!boost::filesystem::is_directory(output_directory_)) { + if(!boost::filesystem::is_directory(output_directory_)) LOG(FATAL) << "Failed to create directory: " << output_directory_; +#ifdef USE_MLSL } +#endif } output_name_prefix_ = save_output_param.output_name_prefix(); need_save_ = output_directory_ == "" ? false : true; @@ -171,6 +179,9 @@ void DetectionOutputLayer::Reshape(const vector*>& bottom, if (name_count_ % num_test_image_ == 0) { // Clean all outputs. if (output_format_ == "VOC") { +#ifdef USE_MLSL + MPI_Barrier(MPI_COMM_WORLD); +#endif boost::filesystem::path output_directory(output_directory_); for (map::iterator it = label_to_name_.begin(); it != label_to_name_.end(); ++it) { diff --git a/src/caffe/layers/mkldnn_batch_norm_layer.cpp b/src/caffe/layers/mkldnn_batch_norm_layer.cpp index 2ef51947b..cdf73bfe5 100644 --- a/src/caffe/layers/mkldnn_batch_norm_layer.cpp +++ b/src/caffe/layers/mkldnn_batch_norm_layer.cpp @@ -234,9 +234,20 @@ void MKLDNNBatchNormLayer::InitBatchNorm(const vector*>& bott EngineParser ep(subengines); unsigned subEngineIndex = 0; BatchNormFwd_pd = NULL; + bool relu = this->layer_param_.batch_norm_param().relu(); + mkldnn::primitive_attr attr; + mkldnn::post_ops ops; + if (relu) { + ops.append_eltwise(1.f, eltwise_relu, 0.f, 0.f); + attr.set_post_ops(ops); + } for(; subEngineIndex < ep.getNumberOfSubEngines(); subEngineIndex++) { try { - BatchNormFwd_pd.reset(new batch_normalization_forward::primitive_desc(BatchNormFwd_desc, + if (relu) + BatchNormFwd_pd.reset(new batch_normalization_forward::primitive_desc(BatchNormFwd_desc, attr, + ep.getMKLDNNSubEngine(subEngineIndex))); + else + BatchNormFwd_pd.reset(new batch_normalization_forward::primitive_desc(BatchNormFwd_desc, ep.getMKLDNNSubEngine(subEngineIndex))); } catch(...) { @@ -249,7 +260,13 @@ void MKLDNNBatchNormLayer::InitBatchNorm(const vector*>& bott // ---- Create memory --------------------- if (use_weight_bias_) { - scaleshift_memory.reset(new memory(BatchNormFwd_pd->weights_primitive_desc(), this->scaleshift_blob_->mutable_cpu_data())); + //For test in train, memory address of blobs_[3] and blobs_[4] will be changed when share data from train net. If the address + // of blobs_[3] and blobs_[4] are continued, we will use them immediately, otherwise we will copy them to scaleshift_blob_ in Forward. + if((this->blobs_[3]->mutable_cpu_data() + this->blobs_[3]->offset(channels_)) == this->blobs_[4]->mutable_cpu_data()){ + scaleshift_memory.reset(new memory(BatchNormFwd_pd->weights_primitive_desc(), this->blobs_[3]->mutable_cpu_data())); + }else { + scaleshift_memory.reset(new memory(BatchNormFwd_pd->weights_primitive_desc(), this->scaleshift_blob_->mutable_cpu_data())); + } } // --- init primitive and prv_memory descriptors ---------------------- @@ -381,6 +398,11 @@ void MKLDNNBatchNormLayer::Forward_cpu(const vector*>& bottom // update top that head at prv fwd_top_data->sync_before_write(); + if((this->blobs_[3]->mutable_cpu_data() + this->blobs_[3]->offset(channels_)) != this->blobs_[4]->mutable_cpu_data()){ + caffe_copy(channels_, this->blobs_[3]->cpu_data(), this->scaleshift_blob_->mutable_cpu_data()); + caffe_copy(channels_, this->blobs_[4]->cpu_data(), this->scaleshift_blob_->mutable_cpu_data() + scaleshift_blob_->offset(channels_)); + } + for (int stats_batch_idx = 0; stats_batch_idx < num_stats_batches_; stats_batch_idx++) { if (use_global_stats_) { // use the stored mean/variance estimates. diff --git a/src/caffe/layers/mkldnn_convolution_layer.cpp b/src/caffe/layers/mkldnn_convolution_layer.cpp index d3f462998..71cef5865 100644 --- a/src/caffe/layers/mkldnn_convolution_layer.cpp +++ b/src/caffe/layers/mkldnn_convolution_layer.cpp @@ -79,10 +79,8 @@ template void MKLDNNConvolutionLayer::compute_output_shape() { ConvolutionLayer::compute_output_shape(); - this->height_out_ = (this->height_ + 2 * this->pad_h_ - this->kernel_h_) - / this->stride_h_ + 1; - this->width_out_ = (this->width_ + 2 * this->pad_w_ - this->kernel_w_) - / this->stride_w_ + 1; + this->height_out_ = this->output_shape_[0]; + this->width_out_ = this->output_shape_[1]; } template @@ -182,8 +180,23 @@ void MKLDNNConvolutionLayer::InitConvolutionFwd(const vector* int32_t kw = this->kernel_w_; int32_t kh = this->kernel_h_; - memory::dims convolutionStrides {this->stride_h_, this->stride_w_}; - memory::dims padding {this->pad_h_, this->pad_w_}; + int32_t sw = this->stride_w_; + int32_t sh = this->stride_h_; + + int32_t pw = this->pad_w_; + int32_t ph = this->pad_h_; + memory::dims convolutionStrides {sh, sw}; + memory::dims padding {ph, pw}; + memory::dims padding_r; + memory::dims dilation; + bool dilated_conv = false; + const int* dilation_data = this->dilation_.cpu_data(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + dilation.push_back(dilation_data[i] - 1); + if (dilation_data[i] != 1) dilated_conv = true; + } + padding_r.push_back((oh - 1) * sh - ih + ((kh - 1) * (dilation_data[0]) + 1) - ph); + padding_r.push_back((ow - 1) * sw - iw + ((kw - 1) * (dilation_data[1]) + 1) - pw); // ---- Initialize memory descriptors (fromat = any) to create convolution descriptor ------------- memory::data_type mpcsn = memory::data_type::f32; @@ -240,19 +253,30 @@ void MKLDNNConvolutionLayer::InitConvolutionFwd(const vector* if (this->need_quantize_) { if(this->scale_in_.size() > 0) this->is_float_ = true; int mask = 0; - std::vector scales; - int count = 1; // 1 for single channel, oc for multi channel - for(int i=0; iis_float_){ - scale = this->scale_out_[0] / (this->scale_in_[0] * this->scale_params_[i]); - } else{ - int output_shift = this->fl_layer_out_[0] - this->fl_layer_in_[0] - this->fl_params_[i]; - scale = pow(2. ,output_shift); - } - scales.push_back(scale); + int count = 1; //single channel + if(this->fl_params_.size() > 1 || this->scale_params_.size() > 1){ + int oc_dim_id = 1; + mask = 1 << oc_dim_id; + count = oc; //multi channel } - attr.set_output_scales(mask,scales); + std::vector scales(count); + float scale; + if(this->is_float_){ + #pragma omp parallel for if (count > 1) + for(int i=0; iscale_out_[0] / (this->scale_in_[0] * this->scale_params_[i]); + scales[i] = scale; + } + } else { + int output_shift; + #pragma omp parallel for if (count > 1) + for(int i=0; ifl_layer_out_[0] - this->fl_layer_in_[0] - this->fl_params_[i]; + scale = pow(2. ,output_shift); + scales[i] = scale; + } + } + attr.set_output_scales(mask, scales); attr.set_int_output_round_mode(round_nearest); } @@ -301,15 +325,27 @@ void MKLDNNConvolutionLayer::InitConvolutionFwd(const vector* // ---- Initialize convolution primitive descriptor ------------- shared_ptr convFwd_desc; if (this->bias_term_) { - convFwd_desc.reset(new convolution_forward::desc( - propagation, convAlgorithm, init_bottom_md, init_weights_md, - init_bias_md, init_top_md, convolutionStrides, padding, padding, - padding_kind::zero)); + if (dilated_conv) + convFwd_desc.reset(new convolution_forward::desc( + propagation, convAlgorithm, init_bottom_md, init_weights_md, + init_bias_md, init_top_md, convolutionStrides, dilation, padding, padding_r, + padding_kind::zero)); + else + convFwd_desc.reset(new convolution_forward::desc( + propagation, convAlgorithm, init_bottom_md, init_weights_md, + init_bias_md, init_top_md, convolutionStrides, padding, padding, + padding_kind::zero)); } else { - convFwd_desc.reset(new convolution_forward::desc( - propagation, convAlgorithm, init_bottom_md, init_weights_md, - init_top_md, convolutionStrides, padding, padding, - padding_kind::zero)); + if (dilated_conv) + convFwd_desc.reset(new convolution_forward::desc( + propagation, convAlgorithm, init_bottom_md, init_weights_md, + init_top_md, convolutionStrides, dilation, padding, padding_r, + padding_kind::zero)); + else + convFwd_desc.reset(new convolution_forward::desc( + propagation, convAlgorithm, init_bottom_md, init_weights_md, + init_top_md, convolutionStrides, padding, padding, + padding_kind::zero)); } for (subEngineIndex = 0; subEngineIndex < ep.getNumberOfSubEngines(); @@ -403,53 +439,73 @@ void MKLDNNConvolutionLayer::InitConvolutionFwd(const vector* fwd_top_data->name = "fwd_top_data @ " + this->layer_param_.name(); fwd_top_data_memory = fwd_top_data->create_output_memory(); - if (this->need_quantize_){ - int count = 1; // 1 for single channel, oc for multi channel - if(this->is_float_ || bottom_is_float){ - std::vector scale_weight; - for(int i=0; iscale_params_[i]); + if (fwd_weights_data == NULL) { + if (this->need_quantize_){ + int count = 1; //single channel + if(this->is_float_ || bottom_is_float){ + if(this->scale_params_.size() > 1){ + count = oc; //multi channel + } + std::vector scale_weight(count); + #pragma omp parallel for if (count > 1) + for(int i=0; iscale_params_[i]; + } + fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, true, scale_weight)); + } else{ + if(this->fl_params_.size() > 1){ + count = oc; //multi channel + } + std::vector fl_weight(count); + #pragma omp parallel for if (count > 1) + for(int i=0; ifl_params_[i]; + } + fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, fl_weight)); } - fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, true, scale_weight)); + } else if(bottom_is_float){ + fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, false)); } else{ - std::vector fl_weight; - for(int i=0; ifl_params_[i]); - } - fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, fl_weight)); + fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this)); } - } else if(bottom_is_float){ - fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this, false)); - } else{ - fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this)); + fwd_weights_data->name = "fwd_weights_data @ " + this->layer_param_.name(); + fwd_weights_data_primitive = fwd_weights_data->create_input(true); } - fwd_weights_data->name = "fwd_weights_data @ " + this->layer_param_.name(); - fwd_weights_data_primitive = fwd_weights_data->create_input(true); if (this->bias_term_) { - shared_ptr prv_fwd_bias_data_memory_pd(new MemPD(convFwd_pd->bias_primitive_desc())); - if (this->need_quantize_){ - int count = 1; // 1 for single channel, oc for multi channel - if(this->is_float_ || bottom_is_float){ - std::vector scale_bias; - for(int i=0; iscale_in_[0] * this->scale_params_[i]); + if (fwd_bias_data == NULL) { + shared_ptr prv_fwd_bias_data_memory_pd(new MemPD(convFwd_pd->bias_primitive_desc())); + if (this->need_quantize_){ + int count = 1; //single channel + if(this->is_float_ || bottom_is_float){ + if(this->scale_params_.size() > 1){ + count = oc; //multi channel + } + std::vector scale_bias(count); + #pragma omp parallel for if (count > 1) + for(int i=0; iscale_in_[0] * this->scale_params_[i]; + } + fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, true, scale_bias)); + } else{ + if(this->fl_params_.size() > 1){ + count = oc; //multi channel + } + std::vector fl_bias(count); + #pragma omp parallel for if (count > 1) + for(int i=0; ifl_layer_in_[0] + this->fl_params_[i]; + } + fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, fl_bias)); } - fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, true, scale_bias)); + } else if(bottom_is_float){ + fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, false)); } else{ - std::vector fl_bias; - for(int i=0; ifl_layer_in_[0] + this->fl_params_[i]); - } - fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, fl_bias)); + fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this)); } - } else if(bottom_is_float){ - fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this, false)); - } else{ - fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this)); + fwd_bias_data->name = "fwd_bias_data @ " + this->layer_param_.name(); + fwd_bias_data_primitive = fwd_bias_data->create_input(true); } - fwd_bias_data->name = "fwd_bias_data @ " + this->layer_param_.name(); - fwd_bias_data_primitive = fwd_bias_data->create_input(true); convFwd.reset(new convolution_forward(*convFwd_pd , *fwd_bottom_data_primitive, *fwd_weights_data_primitive , *fwd_bias_data_primitive, *fwd_top_data_memory)); @@ -519,8 +575,23 @@ void MKLDNNConvolutionLayer::InitConvolutionBwd(const vector* int32_t kw = this->kernel_w_; int32_t kh = this->kernel_h_; - memory::dims convolutionStrides {this->stride_h_, this->stride_w_}; - memory::dims padding {this->pad_h_, this->pad_w_}; + int32_t sw = this->stride_w_; + int32_t sh = this->stride_h_; + + int32_t pw = this->pad_w_; + int32_t ph = this->pad_h_; + memory::dims convolutionStrides {sh, sw}; + memory::dims padding {ph, pw}; + memory::dims padding_r; + memory::dims dilation; + bool dilated_conv = false; + const int* dilation_data = this->dilation_.cpu_data(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + dilation.push_back(dilation_data[i] - 1); + if (dilation_data[i] != 1) dilated_conv = true; + } + padding_r.push_back((oh - 1) * sh - ih + ((kh - 1) * (dilation_data[0]) + 1) - ph); + padding_r.push_back((ow - 1) * sw - iw + ((kw - 1) * (dilation_data[1]) + 1) - pw); // ---- Initialize memory descriptors (fromat = any) to create convolution descriptor ------------- memory::data_type mpcsn = memory::data_type::f32; @@ -552,26 +623,41 @@ void MKLDNNConvolutionLayer::InitConvolutionBwd(const vector* shared_ptr convBwdData_desc; shared_ptr convBwdWeights_desc; if (this->bias_term_) { - convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm + if (dilated_conv) + convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm + , init_bottom_md, init_weights_md, init_bias_md, init_top_md + , convolutionStrides, dilation, padding, padding_r, padding_kind::zero)); + else + convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm , init_bottom_md, init_weights_md, init_bias_md, init_top_md , convolutionStrides, padding, padding, padding_kind::zero)); } else { - convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm - , init_bottom_md, init_weights_md, init_top_md - , convolutionStrides, padding, padding, padding_kind::zero)); + if (dilated_conv) + convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm + , init_bottom_md, init_weights_md, init_top_md + , convolutionStrides, dilation, padding, padding_r, padding_kind::zero)); + else + convBwdWeights_desc.reset(new convolution_backward_weights::desc(convAlgorithm + , init_bottom_md, init_weights_md, init_top_md + , convolutionStrides, padding, padding, padding_kind::zero)); } - convBwdData_desc.reset(new convolution_backward_data::desc(convAlgorithm - , init_bottom_md, init_weights_md, init_top_md - , convolutionStrides, padding, padding, padding_kind::zero)); + if (dilated_conv) + convBwdData_desc.reset(new convolution_backward_data::desc(convAlgorithm + , init_bottom_md, init_weights_md, init_top_md + , convolutionStrides, dilation, padding, padding_r, padding_kind::zero)); + else + convBwdData_desc.reset(new convolution_backward_data::desc(convAlgorithm + , init_bottom_md, init_weights_md, init_top_md + , convolutionStrides, padding, padding, padding_kind::zero)); for(subEngineIndex=0; subEngineIndex < ep.getNumberOfSubEngines(); subEngineIndex++) { try { convBwdData_pd.reset(new convolution_backward_data::primitive_desc(*convBwdData_desc, - ep.getMKLDNNSubEngine(subEngineIndex), *convFwd_pd)); + ep.getMKLDNNSubEngine(subEngineIndex), *convFwd_pd)); convBwdWeights_pd.reset(new convolution_backward_weights::primitive_desc(*convBwdWeights_desc, - ep.getMKLDNNSubEngine(subEngineIndex), *convFwd_pd)); + ep.getMKLDNNSubEngine(subEngineIndex), *convFwd_pd)); } catch(...) { continue; diff --git a/src/caffe/layers/mkldnn_eltwise_layer.cpp b/src/caffe/layers/mkldnn_eltwise_layer.cpp index ec4bc08f2..beb737e74 100644 --- a/src/caffe/layers/mkldnn_eltwise_layer.cpp +++ b/src/caffe/layers/mkldnn_eltwise_layer.cpp @@ -135,7 +135,7 @@ void MKLDNNEltwiseLayer::InitEltwiseFwd(const vector*>& botto int32_t ic = this->channels_; // If we just do simple adding, scale is 1.0 for all inputs we have - std::vector scale(num_bottoms_, 1.0); + std::vector scale(num_bottoms_, 1.0); //Eltwise layer is supporting multiplication coefficient and this scale value can be used for that. for (int i = 0; i < num_bottoms_; ++i) { diff --git a/src/caffe/layers/mkldnn_inner_product_layer.cpp b/src/caffe/layers/mkldnn_inner_product_layer.cpp index 9994df789..b62ec3e4e 100644 --- a/src/caffe/layers/mkldnn_inner_product_layer.cpp +++ b/src/caffe/layers/mkldnn_inner_product_layer.cpp @@ -242,15 +242,19 @@ void MKLDNNInnerProductLayer::InitInnerProductFwd(const vectorname = "fwd_top_data @ " + this->layer_param_.name(); fwd_top_data_memory = fwd_top_data->create_output_memory(); - fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this)); - fwd_weights_data->name = "fwd_weights_data @ " + this->layer_param_.name(); - fwd_weights_data_primitive = fwd_weights_data->create_input(true); + if (fwd_weights_data == NULL) { + fwd_weights_data.reset(new MKLDNNData(usr_weights_data_memory_pd, prv_fwd_weights_data_memory_pd, this->blobs_[0].get(), this)); + fwd_weights_data->name = "fwd_weights_data @ " + this->layer_param_.name(); + fwd_weights_data_primitive = fwd_weights_data->create_input(true); + } if (this->bias_term_) { - shared_ptr prv_fwd_bias_data_memory_pd(new MemPD(ipFwd_pd->bias_primitive_desc())); - fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this)); - fwd_bias_data ->name = "fwd_bias_data @ " + this->layer_param_.name(); - fwd_bias_data_primitive = fwd_bias_data->create_input(true); + if (fwd_bias_data == NULL) { + shared_ptr prv_fwd_bias_data_memory_pd(new MemPD(ipFwd_pd->bias_primitive_desc())); + fwd_bias_data.reset(new MKLDNNData(usr_bias_data_memory_pd, prv_fwd_bias_data_memory_pd, this->blobs_[1].get(), this)); + fwd_bias_data ->name = "fwd_bias_data @ " + this->layer_param_.name(); + fwd_bias_data_primitive = fwd_bias_data->create_input(true); + } ipFwd.reset(new inner_product_forward(*ipFwd_pd , *fwd_bottom_data_primitive, *fwd_weights_data_primitive , *fwd_bias_data_primitive, *fwd_top_data_memory)); diff --git a/src/caffe/layers/mkldnn_split_layer.cpp b/src/caffe/layers/mkldnn_split_layer.cpp index c307352b0..359f52462 100644 --- a/src/caffe/layers/mkldnn_split_layer.cpp +++ b/src/caffe/layers/mkldnn_split_layer.cpp @@ -94,7 +94,7 @@ void MKLDNNSplitLayer::InitSplitBwd(const vector*>& bottom, if (std::is_same::value) NOT_IMPLEMENTED; // We just do simple adding so scale is 1.0 for all inputs we have - std::vector scale(top.size(), 1.0); + std::vector scale(top.size(), 1.0); engine cpu_engine = CpuEngine::Instance().get_engine(); memory::data_type data_type = memory::data_type::f32; // TODO: shouldn't we have format here that is well suited for earlier layer. diff --git a/src/caffe/layers/softmax_layer.cpp b/src/caffe/layers/softmax_layer.cpp index e8ce5374a..4e492b70d 100644 --- a/src/caffe/layers/softmax_layer.cpp +++ b/src/caffe/layers/softmax_layer.cpp @@ -66,17 +66,20 @@ void SoftmaxLayer::Forward_cpu_fast_case( const vector*>& top) { int channels = bottom[0]->shape(softmax_axis_); int dim = bottom[0]->count() / outer_num_; - // assert(dim == channels); -#ifdef _OPENMP -#pragma omp parallel for -#endif + + const Dtype* __restrict__ bottom_ = bottom[0]->cpu_data(); + Dtype* __restrict__ top_ = top[0]->mutable_cpu_data(); + + #ifdef _OPENMP + #pragma omp parallel for + #endif for (int i = 0; i < outer_num_; ++i) { - const Dtype* bottom_data = bottom[0]->cpu_data() + i*dim; - Dtype *top_data = top[0]->mutable_cpu_data() + channels*i; + const Dtype* bottom_data = bottom_ + i*dim; + Dtype *top_data = top_ + channels*i; Dtype scale_data = bottom_data[0]; for (int j = 1; j < channels; ++j) { - scale_data = std::max(scale_data, bottom_data[j]); + scale_data = std::max(scale_data, bottom_data[j]); } // subtraction @@ -95,7 +98,10 @@ void SoftmaxLayer::Forward_cpu_fast_case( } // division - caffe_scal(dim, Dtype(1)/scale_data, top_data); + scale_data = Dtype(1.0) / scale_data; + for (int j = 0; j < channels; j++) { + top_data[j] *= scale_data; + } } } diff --git a/src/caffe/mkl_memory.cpp b/src/caffe/mkl_memory.cpp index d25afd24a..cd0549a02 100644 --- a/src/caffe/mkl_memory.cpp +++ b/src/caffe/mkl_memory.cpp @@ -68,6 +68,12 @@ void MKLMemoryDescriptorBase::create_conversions() { } } +#ifdef CO_SIM +template +void MKLMemoryDescriptorBase::convert_from_prv_cosim(void* cpu_ptr){} +template +void MKLMemoryDescriptorBase::create_reorder_from_prv_cosim(void* cpu_ptr){} +#endif template void MKLMemoryDescriptorBase::remove_conversions() { int status; diff --git a/src/caffe/mkldnn_memory.cpp b/src/caffe/mkldnn_memory.cpp index d2c170ee4..6ba28da3e 100644 --- a/src/caffe/mkldnn_memory.cpp +++ b/src/caffe/mkldnn_memory.cpp @@ -108,20 +108,30 @@ void MKLDNNMemoryDescriptorBase::create_reorder_descriptors(std::vector 1 || scale_ext.size() > 1){ +#ifdef DEBUG + LOG(INFO)<<"multi-channel"; +#endif + int oc_dim_id = 0; + mask = 1 << oc_dim_id; + } + int count = scale.size(); if ( *_usr_memory_pd != *_prv_memory_pd) { - std::vector scales_u2p; - for(int i=0; i scales_u2p(count); + #pragma omp parallel for if (count > 1) + for(int i=0; i < count; i++){ + scales_u2p[i] = scale[i]; } attri.set_output_scales(mask, scales_u2p); attri.set_int_output_round_mode(round_nearest); _reorder_usr2prv_pd = shared_ptr( new reorder::primitive_desc(*_usr_memory_pd, *_prv_memory_pd, attri)); - std::vector scales_p2u; - for(int i=0; i scales_p2u(count); + #pragma omp parallel for if (count > 1) + for(int i=0; i < count; i++){ + scales_p2u[i] = (1. / scale[i]); } attri.set_output_scales(mask, scales_p2u); attri.set_int_output_round_mode(round_nearest); @@ -135,10 +145,12 @@ void MKLDNNMemoryDescriptorBase::create_reorder_descriptors(std::vector scales_e2p; - for(int i=0; iint8 blob_prv_mkldnn_mem_descr->get_scale() will always be 0 ? - scales_e2p.push_back(shift_scale); + std::vector scales_e2p(count); + float shift_scale; + #pragma omp parallel for if (count > 1) + for(int i=0; i < count; i++){ + shift_scale = scale[i] / scale_ext[i]; //fp32->int8 blob_prv_mkldnn_mem_descr->get_scale() will always be 0 ? + scales_e2p[i] = shift_scale; } attri.set_output_scales(mask, scales_e2p); attri.set_int_output_round_mode(round_nearest); @@ -156,22 +168,33 @@ void MKLDNNMemoryDescriptorBase::create_reorder_descriptors(std::vector 1 || fl_ext.size() > 1){ +#ifdef DEBUG + LOG(INFO)<<"multi-channel"; +#endif + int oc_dim_id = 0; + mask = 1 << oc_dim_id; + } + int count = fl.size(); + float scale; if ( *_usr_memory_pd != *_prv_memory_pd) { - std::vector scales_u2p; - for(int i=0; i scales_u2p(count); + #pragma omp parallel for if (count > 1) + for(int i = 0; i < count; i++){ + scale = pow(2, fl[i]); + scales_u2p[i] = scale; } attri.set_output_scales(mask, scales_u2p); attri.set_int_output_round_mode(round_nearest); _reorder_usr2prv_pd = shared_ptr( new reorder::primitive_desc(*_usr_memory_pd, *_prv_memory_pd, attri)); - std::vector scales_p2u; - for(int i=0; i scales_p2u(count); + #pragma omp parallel for if (count > 1) + for(int i = 0; i < count; i++){ + scale = pow(2, -fl[i]); + scales_p2u[i] = scale; } attri.set_output_scales(mask, scales_p2u); attri.set_int_output_round_mode(round_nearest); @@ -185,11 +208,13 @@ void MKLDNNMemoryDescriptorBase::create_reorder_descriptors(std::vector scales_e2p; - for(int i=0; iint8 blob_prv_mkldnn_mem_descr->get_fl() will always be 0 ? - float scale = pow(2, shift_fl); - scales_e2p.push_back(scale); + std::vector scales_e2p(count); + int shift_fl; + #pragma omp parallel for if (count > 1) + for(int i = 0; i < count; i++){ + shift_fl = fl[i] - fl_ext[i]; //fp32->int8 blob_prv_mkldnn_mem_descr->get_fl() will always be 0 ? + scale = pow(2, shift_fl); + scales_e2p[i] = scale; } attri.set_output_scales(mask, scales_e2p); attri.set_int_output_round_mode(round_nearest); @@ -283,7 +308,46 @@ void MKLDNNMemoryDescriptor::convert_to_prv(void* cpu_ptr) this->_reorder_usr2prv.submit(); PERFORMANCE_MEASUREMENT_END_STATIC("mkldnn_conversion"); } +#ifdef CO_SIM +template +void MKLDNNMemoryDescriptor::convert_from_prv_cosim(void* cpu_ptr_cosim) +{ + if(this->_reorder_prv2usr_pd == NULL) + return; + create_reorder_from_prv_cosim(cpu_ptr_cosim); + this->_reorder_prv2usr_cosim.submit(); + +} +template +void MKLDNNMemoryDescriptor::create_reorder_from_prv_cosim(void* cpu_ptr_cosim) +{ + CHECK(cpu_ptr_cosim); + CHECK(this->_usr_memory_pd); + CHECK(this->_prv_memory_pd); + CHECK(this->_reorder_prv2usr_pd); + + this->_usr_memory_cosim = this->_usr_memory; + this->_reorder_prv2usr_cosim.aprimitive = this->_reorder_prv2usr.aprimitive; + + // Used to save data copy from prv. + this->_prv_memory_cosim.reset(new memory(*this->_prv_memory_pd)); + + // Copy prv data to _prv_memory_cosim. + memcpy(this->_prv_memory_cosim->get_data_handle(), this->get_prv_ptr(), this->prv_size()); + + // Wrap _prv_memory_cosim. + this->at_prv_cosim.reset(new primitive::at(*this->_prv_memory_cosim)); + + if(this->_usr_memory == NULL || this->_cpu_ptr != cpu_ptr_cosim) + this->_usr_memory_cosim.reset(new memory(*this->_usr_memory_pd, cpu_ptr_cosim)); + if(this->_reorder_prv2usr.aprimitive == NULL || this->_cpu_ptr != cpu_ptr_cosim){ + + // Create primitive for reorder. + this->_reorder_prv2usr_cosim.aprimitive.reset(new reorder(*this->_reorder_prv2usr_pd, *this->at_prv_cosim, *this->_usr_memory_cosim)); + } +} +#endif template void MKLDNNMemoryDescriptor::create_reorder_from_prv(void* cpu_ptr) { @@ -488,7 +552,7 @@ void MKLDNNMemoryDescriptor::sync_before_read() this->convert_to_prv(const_cast(is_diff ? this->_blob->cpu_diff() : this->_blob->cpu_data())); // if blob has not prv descriptor then set it to avoid conversions on next iterations if (is_diff) { - this->_blob->set_prv_diff_descriptor(this->get_shared_ptr(), true); + this->_blob->set_prv_diff_descriptor(this->get_shared_ptr(), false); // Original: // below line designated to set correspondent SyncedMemory->_head to HEAD_AT_CPU // TODO: need to optimize diff --git a/src/caffe/multinode/apply_mn_param.cpp b/src/caffe/multinode/apply_mn_param.cpp index 1051c0913..807c4bb59 100644 --- a/src/caffe/multinode/apply_mn_param.cpp +++ b/src/caffe/multinode/apply_mn_param.cpp @@ -57,6 +57,7 @@ void ApplyMultinodeParams(const NetParameter& param, // aux map for inserting MnActivationLayer map blob_param_map; MultinodeParameter mn_param = param.multinode(); + const MnParamGradCompressLayerTypeList &compress_layer_list = mn_param.compress_layer_type_list(); // Step 1: Identify all the layers having global net params for (int param_id = 0; param_id < mn_param.model_parallel_size(); param_id++) { @@ -255,6 +256,24 @@ void ApplyMultinodeParams(const NetParameter& param, } } } + + // Step 4: Set MnParamGradCompressParameter on each layer param if the + // layer type is in the compress_layer_type list. + for (int i = 0; i < param_with_mn->layer_size(); i++) { + LayerParameter *layer_param = param_with_mn->mutable_layer(i); + string layer_type = layer_param->type(); + for (int j = 0; j < compress_layer_list.layer_type_size(); j++) { + if (compress_layer_list.layer_type(j) == layer_type) { + MnParamGradCompressParameter *grad_comp_param = layer_param->mutable_mn_grad_compress_param(); + // If param_grad_compress_enable is not set, we set it with default value. + if (grad_comp_param->param_grad_compress_enable_size() == 0) { + // In default, we only compress first blob (weight)'s grad. + grad_comp_param->add_param_grad_compress_enable(true); + } + break; + } + } + } } template diff --git a/src/caffe/multinode/async_param_server.cpp b/src/caffe/multinode/async_param_server.cpp index a403bafb5..36ae76099 100644 --- a/src/caffe/multinode/async_param_server.cpp +++ b/src/caffe/multinode/async_param_server.cpp @@ -50,7 +50,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace caffe { namespace mn { - using std::make_pair; template @@ -63,16 +62,16 @@ namespace caffe { int mpi_rank = get_node_rank(); shared_ptr> net = solver_->net(); const vector *> &net_params = net->learnable_params(); - + const std::vector& layer_need_backward{ net->layer_need_backward() }; + for (int i = 0; i < get_num_groups(); i++) { int root_rank = get_group_root_rank(i); //iterate over layers and skip the ones without params for (int j = 0; j < net->layers().size(); j++) { shared_ptr> layer = net->layers()[j]; - //skip layers w/o parameters - if ((layer->layerOp == nullptr) || !(layer->layerOp->HasParameterSets())) { - continue; - } + if (!layer_need_backward[j]) + continue; + const MultinodeLayerParameter & mn_layer_param = layer->layer_param().multinode(); int model_parts = mn_layer_param.model_parts(); int mn_num_nodes = mn_layer_param.num_nodes(); @@ -105,7 +104,8 @@ namespace caffe { } } } - total_update_ = total_send_ = recv_tasks_.size() * (solver_->param().max_iter() - 1); + // assumed iter is started from 0 + total_update_ = total_send_ = recv_tasks_.size() * solver_->param().max_iter(); } template @@ -157,14 +157,18 @@ namespace caffe { // apply update int blob_wise_iter = async_iter_[make_pair(task.param_id_, task.part_id_) ]; solver_->set_iter(blob_wise_iter); + // TODO: supports partial param update per model parts solver_->ApplyUpdate(task.param_id_); + DLOG(INFO) << "PS (iter " << blob_wise_iter << "): param id=" << task.param_id_ << " weight=" << net_params[task.param_id_]->sumsq_diff(); + DLOG(INFO) << "PS (iter " << blob_wise_iter << "): param id=" << task.param_id_ << " data=" << net_params[task.param_id_]->sumsq_data(); + //clean up solver_->net()->ClearParamDiffs(task.param_id_); async_iter_[ make_pair(task.param_id_, task.part_id_) ] += 1; update_cnt_ += 1; - + // copy model(data) in solver to mpi buffer mpi_buf = send_buf_[make_pair(root_rank, task.param_id_)].first; caffe_copy(count / task.num_parts_, diff --git a/src/caffe/multinode/mlsl.cpp b/src/caffe/multinode/mlsl.cpp index 90b6456a6..69b3f0a66 100644 --- a/src/caffe/multinode/mlsl.cpp +++ b/src/caffe/multinode/mlsl.cpp @@ -59,16 +59,17 @@ namespace caffe { distrib_map = new std::map, boost::shared_ptr>(); if (use_param_server()) { + std::string config_str; if (is_param_server()) { - // this is for paramter servers - MLSL::Environment::GetEnv().Configure("color=0"); + // this is for parameter servers + config_str = "color=0"; } else { // this is for workers int group_id = get_group_id(); - std::string config_str = "color=" + std::to_string(group_id + 1); - MLSL::Environment::GetEnv().Configure(config_str.c_str()); + config_str = "color=" + std::to_string(group_id + 1); } + MLSL::Environment::GetEnv().Configure(config_str.c_str()); } #ifdef ENABLE_WEIGHT_GRAD_COMPRESSION get_weight_grad_compress_info(); diff --git a/src/caffe/multinode/multi_solver.cpp b/src/caffe/multinode/multi_solver.cpp index 686e076eb..96705d9e2 100644 --- a/src/caffe/multinode/multi_solver.cpp +++ b/src/caffe/multinode/multi_solver.cpp @@ -108,7 +108,7 @@ inline bool MultiSolver::IsSkipSyncGradient(int layer_id) { if (!layer_need_backward[layer_id] || ((layers[layer_id]->layerOp != nullptr) && !layers[layer_id]->layerOp->HasParameterSets())) { - DLOG(INFO) << "No need for synchronizing gradients for layer # " << layer_id; + DLOG(INFO) << "No need for synchronizing gradients for layer #" << layer_id; return true; } return false; @@ -130,81 +130,31 @@ inline bool MultiSolver::WaitGradient(int layer_id) { template inline void MultiSolver::UpdateGradient(int layer_id) { #ifdef FW_OVERLAP_OPT - CHECK(layer_finished_flags_[layer_id]); + CHECK(layer_finished_flags_[layer_id]); #endif - PERFORMANCE_MEASUREMENT_BEGIN(); - for (int j = 0; j < callbacks_.size(); ++j) { - callbacks_[j]->apply_updates(layer_id); - } - PERFORMANCE_MEASUREMENT_END_STATIC("weights_update"); + PERFORMANCE_MEASUREMENT_BEGIN(); + for (int j = 0; j < callbacks_.size(); ++j) { + callbacks_[j]->apply_updates(layer_id); + } + PERFORMANCE_MEASUREMENT_END_STATIC("weights_update"); } template -Dtype MultiSolver::ForwardBackwardImpl(bool first, bool last) { - Dtype loss = 0; +inline Dtype MultiSolver::ForwardFromTo(int start, int end) { Net& net = *root_solver_->net(); - const std::vector>>& layers{ net.layers() }; - const std::vector& layer_need_backward{ net.layer_need_backward() }; - - for (int i = 0; i < layers.size(); ++i) { -#ifdef FW_OVERLAP_OPT - if (first) { - LAYER_WAIT_TIMING_START(i); - while (layer_finished_flags_[i] == false) { - if (IsSkipSyncGradient(i)) - break; - if (WaitGradient(i)) { - // The function call cannot be moved out of while loop. Otherwise, - // at first iteration, additional UpdateGradient will be called, - // even if no gradient is synced. - LAYER_TIMING_START(first_update, i); - UpdateGradient(i); - LAYER_TIMING_STOP_2(update, first_update, i); - - // The update time for layer i must be removed from waitcomm time - // for layer i - LAYER_REMOVE_UPDATE_TIME(i, i); - break; - } - - // wait and update gradient for next layers - for (int k=i+1; knet()->ClearParamDiffs(); - } +template +inline void MultiSolver::BackwardFromTo(int start, int end, bool last) { + Net& net = *root_solver_->net(); + const std::vector& layer_need_backward{ net.layer_need_backward() }; - for (int i = layers.size() - 1; i >= 0; --i) { + for (int i=start; i>=end; --i) { if (!layer_need_backward[i]) { continue; } - + net.BackwardFromTo(i, i); LAYER_TIMING_START(startcomm, i); @@ -215,39 +165,161 @@ Dtype MultiSolver::ForwardBackwardImpl(bool first, bool last) { } LAYER_TIMING_STOP(startcomm, i); } +} +template +inline void MultiSolver::Backward(bool last) { + Net& net = *root_solver_->net(); + const std::vector>>& layers{ net.layers() }; + + for (int i = layers.size() - 1; i >= 0; --i) { #ifdef FW_OVERLAP_OPT - int iter = root_solver_->iter(); - int max_iter = root_solver_->param().max_iter(); - bool test = (root_solver_->param().test_interval() - && ((iter + 1) % root_solver_->param().test_interval() == 0)); - bool last_iter_wait_flag = last && (test || (iter == max_iter - 1)); -#else - bool last_iter_wait_flag = last; + if (layer_finished_flags_[i]) + layer_finished_flags_[i] = false; #endif - if (last_iter_wait_flag) { - for (int i = 0; i < layers.size(); ++i) { - LAYER_TIMING_START(waitcomm, i); - if (IsSkipSyncGradient(i)) { - LAYER_TIMING_STOP(waitcomm, i); + BackwardFromTo(i, i, last); + } +} + +#ifdef FW_OVERLAP_OPT +template +void MultiSolver::WaitAndUpdateBeforeFwd(int layer_id) { + LAYER_WAIT_TIMING_START(layer_id); + while (layer_finished_flags_[layer_id] == false) { + if (IsSkipSyncGradient(layer_id)) + break; + if (WaitGradient(layer_id)) { + // The function call cannot be moved out of while loop. Otherwise, + // at first iteration, additional UpdateGradient will be called, + // even if no gradient is synced. + LAYER_TIMING_START(first_update, layer_id); + UpdateGradient(layer_id); + LAYER_TIMING_STOP_2(update, first_update, layer_id); + + // The update time for layer i must be removed from waitcomm time + // for layer i + LAYER_REMOVE_UPDATE_TIME(layer_id, layer_id); + break; + } + + Net& net = *root_solver_->net(); + const std::vector>>& layers{ net.layers() }; + + // wait and update gradient for next layers + for (int k=layer_id+1; k +inline Dtype MultiSolver::UpdateAndForward(bool first) { + Dtype loss = 0; + Net& net = *root_solver_->net(); + const std::vector>>& layers{ net.layers() }; + + for (int i = 0; i < layers.size(); ++i) { + if (first) { + WaitAndUpdateBeforeFwd(i); + } + loss += ForwardFromTo(i, i); + } + return loss; +} +#endif + +template +inline Dtype MultiSolver::Forward() { + Dtype loss = 0; + Net& net = *root_solver_->net(); + const std::vector>>& layers{ net.layers() }; + + for (int i = 0; i < layers.size(); ++i) { + loss += ForwardFromTo(i, i); + } + return loss; +} + +template +inline void MultiSolver::WaitAndUpdate() { + Net& net = *root_solver_->net(); + const std::vector>>& layers{ net.layers() }; + + for (int i = 0; i < layers.size(); ++i) { + LAYER_TIMING_START(waitcomm, i); + if (IsSkipSyncGradient(i)) { + LAYER_TIMING_STOP(waitcomm, i); + continue; + } #ifdef FW_OVERLAP_OPT - while ( + while ( #endif WaitGradient(i) #ifdef FW_OVERLAP_OPT - == false) + == false) #endif - ; - LAYER_TIMING_STOP(waitcomm, i); + ; + LAYER_TIMING_STOP(waitcomm, i); - LAYER_TIMING_START(update, i); - UpdateGradient(i); - LAYER_TIMING_STOP(update, i); - } + LAYER_TIMING_START(update, i); + UpdateGradient(i); + LAYER_TIMING_STOP(update, i); + } +} + +template +inline void MultiSolver::ClearParamDiffs() { + root_solver_->net()->ClearParamDiffs(); +} + +template +Dtype MultiSolver::ForwardBackwardImpl(bool first, bool last) { + Dtype loss = 0; + +#ifdef FW_OVERLAP_OPT + loss = UpdateAndForward(first); +#else + loss = Forward(); +#endif + + // Clear parameter diffs after communication is finished (that is, after + // calling WaitGradientComm) + if (first) { + ClearParamDiffs(); + } + + Backward(last); + +#ifdef FW_OVERLAP_OPT + int iter = root_solver_->iter(); + int max_iter = root_solver_->param().max_iter(); + bool test = (root_solver_->param().test_interval() + && ((iter + 1) % root_solver_->param().test_interval() == 0)); + bool last_iter_wait_flag = last && (test || (iter == max_iter - 1)); +#else + bool last_iter_wait_flag = last; +#endif + + if (last_iter_wait_flag) { + WaitAndUpdate(); } DLOG(WARNING) << "iter " << root_solver_->iter() << ", loss " << loss; diff --git a/src/caffe/multinode/multi_sync.cpp b/src/caffe/multinode/multi_sync.cpp index 217f29e2a..0f8f56811 100644 --- a/src/caffe/multinode/multi_sync.cpp +++ b/src/caffe/multinode/multi_sync.cpp @@ -50,8 +50,8 @@ MultiSync::MultiSync(shared_ptr > root_solver) reduce_req_vec(net_params.size(), NULL), irecv_req_vec(net_params.size(), MPI_REQUEST_NULL), broadcast_req_vec(net_params.size(), NULL), - irecv_done(net_params.size(), true), - broadcast_launched(net_params.size(), true), + irecv_done(net_params.size(), false), + broadcast_launched(net_params.size(), false), distrib_bcast(NULL) { root_solver->param().set_disabled_update(true); diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 646b66b8d..89a741bd2 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -107,7 +107,6 @@ namespace caffe { #endif /* CAFFE_PER_LAYER_TIMINGS */ - template Net::Net(const NetParameter& param, const Net* root_net) : root_net_(root_net) { @@ -211,9 +210,6 @@ void Net::Init(const NetParameter& in_param) { fflush(0); } -#ifdef USE_MLSL - int global_batch_size = -1; -#endif // Basically, build all the layers and set up their connections. name_ = param.name(); map blob_name_to_idx; @@ -300,46 +296,20 @@ void Net::Init(const NetParameter& in_param) { } #ifdef USE_MLSL - if (!layer_param.type().compare("Data") || - !layer_param.type().compare("DummyData") || - !layer_param.type().compare("ImageData") || - !layer_param.type().compare("HDF5Data") || - !layer_param.type().compare("MemoryData") || - !layer_param.type().compare("Input") || - !layer_param.type().compare("WindowData") || - !layer_param.type().compare("AnnotatedData")) { - - // FIXME: retrieve batch_size from top[0]->shape[0] when MLSL stuff will be moved from LayerSetUp - //int batch_size = top_vecs_[layer_id][0]->shape(0); - - int batch_size = 0; - if (!layer_param.type().compare("Data")) - batch_size = layer_param.data_param().batch_size(); - else if (!layer_param.type().compare("DummyData")) - batch_size = layer_param.dummy_data_param().shape(0).dim(0); - else if (!layer_param.type().compare("ImageData")) - batch_size = layer_param.image_data_param().batch_size(); - else if (!layer_param.type().compare("HDF5Data")) - batch_size = layer_param.hdf5_data_param().batch_size(); - else if (!layer_param.type().compare("MemoryData")) - batch_size = layer_param.memory_data_param().batch_size(); - else if (!layer_param.type().compare("WindowData")) - batch_size = layer_param.window_data_param().batch_size(); - else if (!layer_param.type().compare("AnnotatedData")) - batch_size = layer_param.data_param().batch_size(); - else if (!layer_param.type().compare("Input") - && layer_param.input_param().shape(0).dim().size()) - batch_size = layer_param.input_param().shape(0).dim(0); - - if (caffe::TRAIN == param.state().phase()) { - LOG(WARNING) << "SetMinibatchSize " << batch_size; - if (global_batch_size < 0) { - global_batch_size = batch_size * mn::get_group_size(); - mn::train::set_global_minibatch_size(global_batch_size); - } else { - CHECK_EQ(global_batch_size, batch_size * mn::get_group_size()); - } - } + if (caffe::TRAIN == param.state().phase()) { + // global batch size must be a multiple of data_parts + int global_batch_size = mn::train::get_global_minibatch_size(); + int fake_batch_size = mn::get_distrib()->get_data_parts(); + if (mn::use_param_server() && mn::is_param_server()) { + fake_batch_size = mn::nServer; + } + + if (global_batch_size == 0) { + LOG(WARNING) << "SetMinibatchSize " << fake_batch_size; + mn::train::set_global_minibatch_size(fake_batch_size); + } else { + CHECK_EQ(global_batch_size, fake_batch_size); + } } #endif /* USE_MLSL */ @@ -555,42 +525,55 @@ template void Net::CompileNet(const NetParameter& param, NetParameter* param_compiled) { - NetParameter param_temp0; -#ifndef DISABLE_BN_FOLDING - param_temp0.CopyFrom(param); - param_temp0.clear_layer(); - RemoveBNScale(param, ¶m_temp0); -#else - param_temp0 = param; + #define NUM_OF_RULES sizeof(CompileRules)/sizeof(CompileRules[0]) + #define COMPILE_BN_FOLDING_INDEX 0 + #define COMPILE_CONV_RELU_FUSION_INDEX 2 + #define COMPILE_BN_RELU_FUSION_INDEX 3 + #define COMPILE_SPARSE_INDEX 5 + #define COMPILE_CONV_SUM_FUSION_INDEX 6 + int i, current = 0; + NetParameter param_temp[2]; + void (*CompileRules[]) (const NetParameter& param, NetParameter* param_compiled) = + {RemoveBNScale, CompilationRuleRemoveScale, CompilationRuleConvReluFusion, + CompilationRuleFuseBnRelu, CompilationRuleBNInplace, CompilationRuleSparse, CompilationRuleConvSumFusion}; + + bool disabled[NUM_OF_RULES] = {false}; + +#ifdef DISABLE_BN_FOLDING + disabled[COMPILE_BN_FOLDING_INDEX] = true; +#endif +#ifdef DISABLE_CONV_RELU_FUSION + disabled[COMPILE_CONV_RELU_FUSION_INDEX] = true; +#endif +#ifdef DISABLE_BN_RELU_FUSION + disabled[COMPILE_BN_RELU_FUSION_INDEX] = true; #endif - NetParameter param_temp; // temporary compiled param - param_temp.CopyFrom(param_temp0); - param_temp.clear_layer(); // Remove layers - CompilationRuleOne(param_temp0, ¶m_temp); - - NetParameter param_temp2; // temporary compiled param - param_temp2.CopyFrom(param_temp); - param_temp2.clear_layer(); // Remove layers - CompilationRuleTwo(param_temp, ¶m_temp2); - #ifdef DISABLE_CONV_SUM_FUSION - param_compiled->CopyFrom(param_temp2); - param_compiled->clear_layer(); // Remove layers - CompilationRuleThree(param_temp2, param_compiled); -#else - NetParameter param_temp3; - param_temp3.CopyFrom(param_temp2); - param_temp3.clear_layer(); - CompilationRuleThree(param_temp2, ¶m_temp3); - - param_compiled->CopyFrom(param_temp3); - param_compiled->clear_layer(); - CompilationRuleFour(param_temp3, param_compiled); -#endif + disabled[COMPILE_CONV_SUM_FUSION_INDEX] = true; +#endif +#ifdef DISABLE_SPARSE + disabled[COMPILE_SPARSE_INDEX] = true; +#endif + + param_temp[current].CopyFrom(param); + for (i = 0; i < NUM_OF_RULES; i++) + if (!disabled[i]) { + param_temp[1 - current].CopyFrom(param_temp[current]); + param_temp[1 - current].clear_layer(); // Remove layers + (*CompileRules[i]) (param_temp[current], ¶m_temp[1 - current]); + current = 1 - current; + } + param_compiled->CopyFrom(param_temp[current]); + #undef NUM_OF_RULES + #undef COMPILE_BN_FOLDING_INDEX + #undef COMPILE_CONV_RELU_FUSION_INDEX + #undef COMPILE_BN_RELU_FUSION_INDEX + #undef DISABLE_SPARSE_INDEX + #undef COMPILE_CONV_SUM_FUSION_INDEX } template -void Net::CompilationRuleOne(const NetParameter& param, +void Net::CompilationRuleRemoveScale(const NetParameter& param, NetParameter* param_compiled) { bool merge_bn_scale = false; @@ -680,7 +663,7 @@ void Net::CompilationRuleOne(const NetParameter& param, template -void Net::CompilationRuleTwo(const NetParameter& param, +void Net::CompilationRuleConvReluFusion(const NetParameter& param, NetParameter* param_compiled) { std::set layers_to_drop; bool use_negative_slope = false; @@ -705,16 +688,6 @@ void Net::CompilationRuleTwo(const NetParameter& param, (layer_param->engine() == "") && (param.engine().compare(0, 6, "MKLDNN") == 0 && param.engine().find(":DLA", 6) == string::npos)))) { - // check if Dialation is larger than 1. if yes, don't fuse the following Relu layer with this conv layer - // as MKLDNN doesn't support dilation convolution yet. - bool dilation = false; - for (int i = 0; i < layer_param->convolution_param().dilation_size(); ++i) { - if (layer_param->convolution_param().dilation(i) > 1) { - dilation = true; - break; - } - } - std::vector consumer_layer_params; GetBlobConsumers(consumer_layer_params, layer_param->top(0), param, i+1 < param.layer_size() ? i+1 : i); @@ -724,8 +697,7 @@ void Net::CompilationRuleTwo(const NetParameter& param, // Consumer layer of blob produced by Conv // has to be ReLU layer with one Input Blob - if (!dilation && - (consumer_layer_param.type().compare("ReLU") == 0) && + if ((consumer_layer_param.type().compare("ReLU") == 0) && ((consumer_layer_param.relu_param().engine() == ReLUParameter_Engine_MKLDNN) || ((consumer_layer_param.relu_param().engine() == ReLUParameter_Engine_DEFAULT) && (consumer_layer_param.engine().compare(0, 6, "MKLDNN") == 0 && @@ -783,7 +755,7 @@ void Net::CompilationRuleTwo(const NetParameter& param, } template -void Net::CompilationRuleThree(const NetParameter& param, +void Net::CompilationRuleBNInplace(const NetParameter& param, NetParameter* param_compiled) { for (int i = 0; i < param.layer_size(); ++i) { LayerParameter* layer_param = @@ -889,7 +861,7 @@ void Net::CompilationRuleThree(const NetParameter& param, } template -void Net::CompilationRuleFour(const NetParameter& param, +void Net::CompilationRuleConvSumFusion(const NetParameter& param, NetParameter* param_compiled) { // only apply this rule for inference(TEST) phase if (param.state().phase() != TEST || param.engine().compare("MKLDNN") != 0) { @@ -910,7 +882,7 @@ void Net::CompilationRuleFour(const NetParameter& param, param, i + 1 < param.layer_size() ? i + 1 : i); - if (child_layers_params[0]->type().compare("Eltwise") == 0) { + if (child_layers_params.size() > 0 && child_layers_params[0]->type().compare("Eltwise") == 0) { std::vector grand_child_layers_params; Net::GetBlobConsumers(grand_child_layers_params, @@ -953,6 +925,268 @@ void Net::CompilationRuleFour(const NetParameter& param, return; } +template +void Net::CompilationRuleSparse(const NetParameter& param, + NetParameter* param_compiled) { + //TODO: Verify the convergence of the sparse model + if (param.state().phase() != TEST || param.engine().compare("MKLDNN") != 0) { + param_compiled->CopyFrom(param); + return; + } + + LayerParameter* potential_sparse_layer = NULL; + LayerParameter* confirmed_sparse_layer = NULL; + LayerParameter* layer_param = NULL; + + std::map bottom_blob_layer_mapping; + // top blob as the key and its layer name as the value + std::map top_blob_layer_mapping; + std::map> sparse_layer_name_mapping; // key is layer name + std::vector trigger_sparse_layers; + std::map conv_layer_id_mapping; + std::map eltwise_layer_id_mapping; + std::map layer_name_id_mapping; + + std::map pooling_layer_id_stride; // saves the layer's id which + // need to add pooling layer; + std::map conv_layer_id_stride; // saves the conv layer's id which + // need to modify its stride; + std::map pooling_layer_id_top_blob; + + // step 1 get topology details, such as layer name/id mapping + for (int index = 0; index < param.layer_size(); index++) { + layer_param = (const_cast(param)).mutable_layer(index); + layer_name_id_mapping[layer_param->name()] = index; + + for (int j = 0; j < layer_param->top_size(); j++) { + top_blob_layer_mapping[layer_param->top(j)] = layer_param->name(); + } + + for (int k = 0; k < layer_param->bottom_size(); k++) { + bottom_blob_layer_mapping[layer_param->bottom(k)] = layer_param->name(); + } + + if (layer_param->type().compare("Eltwise") == 0) { + eltwise_layer_id_mapping[layer_param->name()] = index; + } + + if (layer_param->type().compare("Convolution") == 0 && + layer_param->has_convolution_param() && + layer_param->convolution_param().kernel_size_size() > 0 && + layer_param->convolution_param().stride_size() > 0) { + conv_layer_id_mapping[layer_param->name()] = index; + + if (layer_param->convolution_param().kernel_size(0) > 1) { + potential_sparse_layer = layer_param; + } else if (layer_param->convolution_param().kernel_size(0) == 1 && + layer_param->convolution_param().stride(0) > 1 && + (layer_param->convolution_param().pad_size() == 0 || + (layer_param->convolution_param().pad_size() > 0 && + layer_param->convolution_param().pad(0) == 0))) { + confirmed_sparse_layer = potential_sparse_layer; + + if (trigger_sparse_layers.size() > 0) { + for (int j = 0; j < trigger_sparse_layers.size(); j++) { + if (top_blob_layer_mapping[trigger_sparse_layers[j]->bottom(0)] != + top_blob_layer_mapping[layer_param->bottom(0)]) { + trigger_sparse_layers.clear(); + break; + } + } + trigger_sparse_layers.push_back(layer_param); + + sparse_layer_name_mapping[confirmed_sparse_layer->name()] = + trigger_sparse_layers; + } else { + trigger_sparse_layers.push_back(layer_param); + } + } + } + } + + if(trigger_sparse_layers.size() > 1) + sparse_layer_name_mapping[confirmed_sparse_layer->name()] = trigger_sparse_layers; + + std::map>::iterator sparse_it = + sparse_layer_name_mapping.begin(); + while (sparse_it != sparse_layer_name_mapping.end() && sparse_it->second.size() > 1) { + + if (sparse_it->second[0]->convolution_param().stride(0) != + sparse_it->second[1]->convolution_param().stride(0)) { + continue; + } + LayerParameter* sparse_layer_param = + (const_cast(param)) + .mutable_layer(layer_name_id_mapping[sparse_it->first]); + int updated_stride_value = + sparse_layer_param->convolution_param().stride(0) * + sparse_it->second[0]->convolution_param().stride(0); + conv_layer_id_stride[conv_layer_id_mapping[sparse_it->first]] = + updated_stride_value; + conv_layer_id_stride[conv_layer_id_mapping[sparse_it->second[0]->name()]] = 1; + conv_layer_id_stride[conv_layer_id_mapping[sparse_it->second[1]->name()]] = 1; + + std::map::iterator eltwise_iter = eltwise_layer_id_mapping.begin(); + while (eltwise_iter != eltwise_layer_id_mapping.end()) { + // it means there is a eltwise layer between the layer need to sparse and + // the layer triggers the sparse + if (conv_layer_id_mapping[sparse_it->first] < eltwise_iter->second && + eltwise_iter->second < conv_layer_id_mapping[sparse_it->second[0]->name()]) { + break; // now eltwise_iter stands for eltwise layer + } + eltwise_iter++; + } + + std::vector need_add_pooling_layer_id; + LayerParameter* eltwise_layer_param = + (const_cast(param)).mutable_layer(eltwise_iter->second); + for (int k = 0; k < eltwise_layer_param->bottom_size() - 1; k++) { + need_add_pooling_layer_id.push_back( + layer_name_id_mapping + [top_blob_layer_mapping[eltwise_layer_param->bottom(k)]]); + int pooling_layer_id = layer_name_id_mapping + [top_blob_layer_mapping[eltwise_layer_param->bottom(k)]]; + pooling_layer_id_stride[pooling_layer_id] = updated_stride_value; + pooling_layer_id_top_blob[pooling_layer_id] = + eltwise_layer_param->bottom(k); + } + sparse_it++; + } + + for (int i = 0; i < param.layer_size(); i++) { + LayerParameter* each_layer_param = + (const_cast(param)).mutable_layer(i); + if (conv_layer_id_stride.find(i) != conv_layer_id_stride.end()) { + each_layer_param->mutable_convolution_param()->set_stride( + 0, conv_layer_id_stride[i]); + } else if (pooling_layer_id_stride.find(i) != + pooling_layer_id_stride.end()) { + param_compiled->add_layer()->CopyFrom(*each_layer_param); + each_layer_param = param_compiled->add_layer(); + each_layer_param->Clear(); + each_layer_param->set_type("Pooling"); + each_layer_param->set_name(pooling_layer_id_top_blob[i] + "_p"); + + each_layer_param->add_bottom(pooling_layer_id_top_blob[i]); + each_layer_param->add_top(pooling_layer_id_top_blob[i] + "_p"); + + each_layer_param->mutable_pooling_param()->add_stride( + pooling_layer_id_stride[i]); + each_layer_param->mutable_pooling_param()->add_kernel_size(1); + each_layer_param->mutable_pooling_param()->set_pool( + PoolingParameter_PoolMethod_MAX); + + int target_layer_id = layer_name_id_mapping + [bottom_blob_layer_mapping[pooling_layer_id_top_blob[i]]]; + LayerParameter* target_layer_param = + (const_cast(param)).mutable_layer(target_layer_id); + int target_blob_index = 0; + bool found_blob_flag = false; + for (; target_blob_index < target_layer_param->bottom_size(); + target_blob_index++) { + if (target_layer_param->bottom(target_blob_index) == + pooling_layer_id_top_blob[i]) { + found_blob_flag = true; + break; + } + } + if (found_blob_flag) { + target_layer_param->set_bottom(target_blob_index, + pooling_layer_id_top_blob[i] + "_p"); + continue; + } + } + param_compiled->add_layer()->CopyFrom(*each_layer_param); + } +} + +template +void Net::CompilationRuleFuseBnRelu(const NetParameter& param, + NetParameter* param_compiled) { + std::set layers_to_drop; + for (int i = 0; i < param.layer_size(); ++i) { + LayerParameter* layer_param = + (const_cast(param)).mutable_layer(i); + bool layer_included = true; + + // Optimization rule BnRelu: + // - If we are having engine MKLDNN and Relu layer within a model + // and input bottom comes from BatchNorm of engine MKLDNN + // then we can remove Relu layer + // and rename BatchNorm top blob after deleted Relu's top + // If current layer is BatchNorm of MKLDNN engine.. + if (((layer_param->type().compare("BatchNorm") == 0) && + ((layer_param->batch_norm_param().engine() == BatchNormParameter_Engine_MKLDNN) || + ((layer_param->batch_norm_param().engine() == BatchNormParameter_Engine_DEFAULT) && + (layer_param->has_engine() == false) && + (param.engine().compare("MKLDNN") == 0)) || + (param.engine() == "" && layer_param->engine().compare("MKLDNN") == 0)))) { + std::vector consumer_layer_params; + GetBlobConsumers(consumer_layer_params, + layer_param->top(0), + param, + i+1 < param.layer_size() ? i+1 : i); + const LayerParameter& consumer_layer_param = + consumer_layer_params.size() > 0 ? + *(consumer_layer_params[0]) : *layer_param; + // Consumer layer of blob produced by BN + // has to be Relu layer with one Input Blob + + if ((consumer_layer_param.type().compare("ReLU") == 0) && + ((consumer_layer_param.relu_param().engine() == ReLUParameter_Engine_MKLDNN) || + ((consumer_layer_param.relu_param().engine() == ReLUParameter_Engine_DEFAULT) && + (consumer_layer_param.engine().compare(0, 6, "MKLDNN") == 0 && + consumer_layer_param.engine().find(":DLA", 6) == string::npos)) || + ((consumer_layer_param.relu_param().engine() == ReLUParameter_Engine_DEFAULT) && + (consumer_layer_param.engine() == "") && + (param.engine().compare(0, 6, "MKLDNN") == 0 && + param.engine().find(":DLA", 6) == string::npos))) && + !consumer_layer_param.relu_param().negative_slope()) { + // negative_slope should be zero + string& batchnorm_top_blob_name = + const_cast(layer_param->top(0)); + + if(param.state().phase() == TEST) { + const string& relu_top_blob_name = consumer_layer_param.top(0); + // Mark Consumer layer (its name) as the one marked for dropping + layers_to_drop.insert(consumer_layer_param.name()); + + // Replace BatchNorm top name with ReLU top name + batchnorm_top_blob_name.resize(relu_top_blob_name.size()); + batchnorm_top_blob_name.replace(0, + relu_top_blob_name.size(), + relu_top_blob_name); + } + // set relu flag in BN + layer_param->mutable_batch_norm_param()->set_relu(true); + + if(param.state().phase() == TRAIN) { + if(i+1 < param.layer_size()) { + LayerParameter* relu_layer_param = + (const_cast(param)).mutable_layer(i+1); + relu_layer_param->mutable_relu_param()->set_fuse(true); + // LOG(INFO) << "Bn + Relu fused." << std::endl; + } + } + } + } + + if(param.state().phase() == TEST) { + if (layers_to_drop.find(layer_param->name()) != layers_to_drop.end()) { + LOG_IF(INFO, Caffe::root_solver()) << "Dropped layer: " + << layer_param->name() << std::endl; + layer_included = false; + // Remove dropped layer from the list of layers to be dropped + layers_to_drop.erase(layers_to_drop.find(layer_param->name())); + } + } + + if (layer_included) { + param_compiled->add_layer()->CopyFrom(*layer_param); + } + } +} + template void Net::GetBlobConsumers( std::vector& consumer_blobs, diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index cfbfdb55c..f850864ce 100755 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -709,6 +709,7 @@ message RandomAspectRatioParameter { optional float min_area_ratio = 1 [default = 0.5]; optional float max_area_ratio = 2 [default = 1]; optional float aspect_ratio_change = 3 [default = 1]; + optional uint32 max_attempt = 4 [default = 10]; optional ResizeParameter resize_param = 5; } @@ -954,6 +955,7 @@ message BatchNormParameter { optional FillerParameter bias_filler = 8; // The filler for the bias // Batch size used for statistics, 0 would use the batch size of bottom blob optional uint32 stats_batch_size = 9 [default = 0]; + optional bool relu = 10 [default = false]; } message SplitParameter { diff --git a/src/caffe/quant/quantization.cpp b/src/caffe/quant/quantization.cpp index 2344d5e40..4429f3621 100644 --- a/src/caffe/quant/quantization.cpp +++ b/src/caffe/quant/quantization.cpp @@ -204,11 +204,14 @@ void Quantization::Quantize2DynamicFixedPoint() { else LOG(INFO) << "Scale param=" << scale_params_[k][0]; } else { - for (int j = 0; j < il_params_[k].size(); j++) { - if (this->power) + if (this->power){ + for (int j = 0; j < il_params_[k].size(); j++) { LOG(INFO) << "Integer length params[" << j << "]=" << il_params_[k][j]; - else + } + } else{ + for (int j = 0; j < scale_params_[k].size(); j++) { LOG(INFO) << "Scale params[" << j << "]=" << scale_params_[k][j]; + } } } } diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 2b47b0b2e..a9892716c 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -358,10 +358,10 @@ void Solver::Step(int iters) { net_->ResetTimers(); #ifdef USE_MLSL - if (mn::get_node_id() == 0) + if (mn::is_root() == true) #endif - LOG(INFO) << "iter " << iter_ << ", forward_backward_update_time: " - << iter_time << " ms"; + LOG(INFO) << "iter " << iter_ << ", forward_backward_update_time: " + << iter_time << " ms"; #endif // Increment the internal iter_ counter -- its value should always indicate @@ -527,9 +527,8 @@ void Solver::TestClassification(const int test_net_id) { #ifdef USE_MLSL mn::allreduce(&loss, 1); loss /= (param_.test_iter(test_net_id) * mn::get_group_size()); - if (mn::get_node_id() == 0) { + if (mn::is_root() == true) LOG(INFO) << "Test loss: " << loss; - } #else /* !USE_MLSL */ loss /= param_.test_iter(test_net_id); LOG(INFO) << "Test loss: " << loss; @@ -537,7 +536,7 @@ void Solver::TestClassification(const int test_net_id) { } #ifdef USE_MLSL mn::allreduce(test_score.data(), test_score.size()); - if (mn::get_node_id() == 0) + if (mn::is_root() == true) #endif /* USE_MLSL */ for (int i = 0; i < test_score.size(); ++i) { const int output_blob_index = @@ -634,14 +633,13 @@ void Solver::TestDetection(const int test_net_id) { } if (param_.test_compute_loss()) { #ifdef USE_MLSL - mn::allreduce(&loss, 1); - loss /= (param_.test_iter(test_net_id) * mn::get_group_size()); - if (mn::get_node_id() == 0) { - LOG(INFO) << "Test loss: " << loss; - } -#else /* !USE_MLSL */ - loss /= param_.test_iter(test_net_id); + mn::allreduce(&loss, 1); + loss /= (param_.test_iter(test_net_id) * mn::get_group_size()); + if (mn::is_root() == true) LOG(INFO) << "Test loss: " << loss; +#else /* !USE_MLSL */ + loss /= param_.test_iter(test_net_id); + LOG(INFO) << "Test loss: " << loss; #endif /* USE_MLSL */ } @@ -690,13 +688,16 @@ void Solver::TestDetection(const int test_net_id) { mAP = allnodes_mAP; Dtype allnodes_num_pos = static_cast(num_pos.size()); mn::allreduce(&allnodes_num_pos, 1); - if (mn::get_node_id() == 0) - mAP /= allnodes_num_pos; + if (mn::is_root() == true) + mAP /= allnodes_num_pos; #else /* USE_MLSL */ mAP /= num_pos.size(); #endif const int output_blob_index = test_net->output_blob_indices()[i]; const string& output_name = test_net->blob_names()[output_blob_index]; +#ifdef USE_MLSL + if (mn::is_root() == true) +#endif LOG(INFO) << " Test net output #" << i << ": " << output_name << " = " << mAP; } diff --git a/src/caffe/solvers/rmsprop_solver.cpp b/src/caffe/solvers/rmsprop_solver.cpp index 6fd386a43..366612293 100644 --- a/src/caffe/solvers/rmsprop_solver.cpp +++ b/src/caffe/solvers/rmsprop_solver.cpp @@ -56,35 +56,59 @@ void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { Dtype delta = this->param_.delta(); Dtype rms_decay = this->param_.rms_decay(); Dtype local_rate = rate * net_params_lr[param_id]; + Dtype momentum = this->param_.momentum(); + const Dtype* diff_ptr = NULL; + Dtype* mutable_diff_ptr = NULL; switch (Caffe::mode()) { case Caffe::CPU: + if (net_params[param_id]->prv_diff() + && (net_params[param_id]->prv_diff_count() + == net_params[param_id]->count())) { + diff_ptr = net_params[param_id]->prv_diff(); + mutable_diff_ptr = net_params[param_id]->mutable_prv_diff(); + } else { + diff_ptr = net_params[param_id]->cpu_diff(); + mutable_diff_ptr = net_params[param_id]->mutable_cpu_diff(); + } + // compute square of gradient in update caffe_powx(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), Dtype(2), - this->update_[param_id]->mutable_cpu_data()); + diff_ptr, Dtype(2), + this->update_[param_id]->mutable_cpu_data()); // update history caffe_cpu_axpby(net_params[param_id] -> count(), - Dtype(1-rms_decay), this->update_[param_id]->cpu_data(), - rms_decay, this->history_[param_id]-> mutable_cpu_data()); + Dtype(1-rms_decay), this->update_[param_id]->cpu_data(), + rms_decay, this->history_[param_id]-> mutable_cpu_data()); - // prepare update - caffe_powx(net_params[param_id]->count(), - this->history_[param_id]->cpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_cpu_data()); + // copy + caffe_copy(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + // add delta caffe_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_cpu_data()); + delta, this->update_[param_id]->mutable_cpu_data()); + + // prepare update + caffe_powx(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); caffe_div(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), this->update_[param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); + diff_ptr, this->update_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); // scale and copy caffe_cpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->cpu_data(), Dtype(0), - net_params[param_id]->mutable_cpu_diff()); + this->update_[param_id]->cpu_data(), momentum, + this->temp_[param_id]->mutable_cpu_data()); + + caffe_copy(net_params[param_id]->count(), + this->temp_[param_id]->cpu_data(), + mutable_diff_ptr); + break; case Caffe::GPU: #ifndef CPU_ONLY diff --git a/src/caffe/solvers/sgd_solver.cpp b/src/caffe/solvers/sgd_solver.cpp index d3f1d49e6..304adf43c 100644 --- a/src/caffe/solvers/sgd_solver.cpp +++ b/src/caffe/solvers/sgd_solver.cpp @@ -296,9 +296,7 @@ void axpy_axpby_copy(size_t count, const float decay, const float* net_pa const float rate, const float momentum, float* history_data) { #ifdef _OPENMP -//#pragma omp parallel for simd schedule(static) //Not work for GCC 4.8 -#pragma omp parallel for schedule(static) -#pragma simd +#pragma omp parallel for simd schedule(static) #endif for (size_t i = 0; i < count; ++i) { history_data[i] = rate * (decay * net_params_data[i] + net_params_diff[i]) + momentum * history_data[i]; @@ -311,9 +309,7 @@ void axpy_axpby_copy(size_t count, const double decay, const double* net const double rate, const double momentum, double* history_data) { #ifdef _OPENMP -//#pragma omp parallel for simd schedule(static) //Not work for GCC 4.8 -#pragma omp parallel for schedule(static) -#pragma simd +#pragma omp parallel for simd schedule(static) #endif for (size_t i = 0; i < count; ++i) { history_data[i] = rate * (decay * net_params_data[i] + net_params_diff[i]) + momentum * history_data[i]; @@ -333,9 +329,7 @@ void axpy_axpby_copy_axpy(size_t count, const float decay, float* net_par const float rate, const float momentum, float* history_data, const float update_param) { #ifdef _OPENMP -//#pragma omp parallel for simd schedule(static) //Not work for GCC 4.8 -#pragma omp parallel for schedule(static) -#pragma simd +#pragma omp parallel for simd schedule(static) #endif for (size_t i = 0; i < count; ++i) { history_data[i] = rate * (decay * net_params_data[i] + net_params_diff[i]) + momentum * history_data[i]; @@ -348,9 +342,7 @@ void axpy_axpby_copy_axpy(size_t count, const double decay, double* net_ const double rate, const double momentum, double* history_data, const double update_param) { #ifdef _OPENMP -//#pragma omp parallel for simd schedule(static) //Not work for GCC 4.8 -#pragma omp parallel for schedule(static) -#pragma simd +#pragma omp parallel for simd schedule(static) #endif for (size_t i = 0; i < count; ++i) { history_data[i] = rate * (decay * net_params_data[i] + net_params_diff[i]) + momentum * history_data[i]; diff --git a/src/caffe/syncedmem.cpp b/src/caffe/syncedmem.cpp index 612353807..507ccf150 100644 --- a/src/caffe/syncedmem.cpp +++ b/src/caffe/syncedmem.cpp @@ -56,6 +56,11 @@ SyncedMemory::~SyncedMemory() { cudaSetDevice(initial_device); } #endif // CPU_ONLY +#ifdef CO_SIM + if (cpu_ptr_cosim_){ + CaffeFreeHost(cpu_ptr_cosim_, cpu_malloc_use_cuda_); + } +#endif } inline void SyncedMemory::to_cpu() { @@ -95,6 +100,46 @@ inline void SyncedMemory::to_cpu() { } } +#ifdef CO_SIM +//Only invoke when getting data from mkldnn engine by COSIM. +inline void SyncedMemory::to_cpu_cosim(){ + switch (head_) { + case UNINITIALIZED: + if (cpu_ptr_cosim_ == NULL) { + CaffeMallocHost(&cpu_ptr_cosim_, size_, &cpu_malloc_use_cuda_); + caffe_memset(size_, 0, cpu_ptr_cosim_); + } + break; + case HEAD_AT_GPU: + assert(!"Do not support GPU."); + break; + case HEAD_AT_PRV: + if (cpu_ptr_cosim_ == NULL) { + CaffeMallocHost(&cpu_ptr_cosim_, size_, &cpu_malloc_use_cuda_); + } + CHECK(prv_descriptor_.get()); + prv_descriptor_->convert_from_prv_cosim(cpu_ptr_cosim_); + prv_descriptor_->on_to_cpu(); + break; + case SYNCED_PRV: + case HEAD_AT_CPU: + case SYNCED: + if (cpu_ptr_cosim_ == NULL) { + CaffeMallocHost(&cpu_ptr_cosim_, size_, &cpu_malloc_use_cuda_); + } + memcpy(cpu_ptr_cosim_, cpu_ptr_, size_); + break; + } +} + +const void* SyncedMemory::cpu_data_cosim() { + boost::mutex::scoped_lock lock(mtx); + to_cpu_cosim(); + return (const void*)cpu_ptr_cosim_; + +} +#endif + inline void SyncedMemory::to_gpu() { #ifndef CPU_ONLY switch (head_) { diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index f68be835c..bf685a7df 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -345,7 +345,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { } else if (solver_->type() == string("RMSProp")) { const Dtype rms_decay = 0.95; update_value /= std::sqrt(rms_decay*history_value - + grad * grad * (1 - rms_decay)) + delta_; + + grad * grad * (1 - rms_decay) + delta_); } else if (solver_->type() == string("AdaDelta")) { const Dtype update_history_value = (i == D) ? history[1 + num_param_blobs]->cpu_data()[0] : @@ -1250,6 +1250,7 @@ class RMSPropSolverTest : public GradientBasedSolverTest { const Dtype rms_decay = 0.95; SolverParameter new_param = param; new_param.set_rms_decay(rms_decay); + new_param.set_momentum(0); this->solver_.reset(new RMSPropSolver(new_param)); } }; diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index 257ae9153..9d2e11340 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -52,23 +52,12 @@ void LMDB::Open(const string& source, Mode mode) { int flags = 0; if (mode == READ) { flags = MDB_RDONLY | MDB_NOTLS; +#ifdef ALLOW_LMDB_NOLOCK + flags |= MDB_NOLOCK; +#endif } int rc = mdb_env_open(mdb_env_, source.c_str(), flags, 0664); -#ifndef ALLOW_LMDB_NOLOCK MDB_CHECK(rc); -#else - if (rc == EACCES) { - LOG(WARNING) << "Permission denied. Trying with MDB_NOLOCK ..."; - // Close and re-open environment handle - mdb_env_close(mdb_env_); - MDB_CHECK(mdb_env_create(&mdb_env_)); - // Try again with MDB_NOLOCK - flags |= MDB_NOLOCK; - MDB_CHECK(mdb_env_open(mdb_env_, source.c_str(), flags, 0664)); - } else { - MDB_CHECK(rc); - } -#endif LOG(INFO) << "Opened lmdb " << source; } diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 5edfaa88a..f22af5e11 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -730,8 +730,18 @@ int main(int argc, char** argv) { caffe::GlobalInit(&argc, &argv); #ifdef USE_MLSL caffe::mn::nGroup = FLAGS_n_group; + if (caffe::mn::nGroup <= 0) { + LOG(ERROR) << "Invalid number of group: " << caffe::mn::nGroup; + return 1; + } + caffe::mn::nServer = FLAGS_n_server; caffe::mn::init(&argc, &argv); + if (caffe::mn::get_group_size() <= 0) { + LOG(ERROR) << "Invalid group size: " << caffe::mn::get_group_size(); + return 1; + } + CHECK_EQ(caffe::mn::get_world_size(), caffe::mn::nGroup * caffe::mn::get_group_size() + caffe::mn::nServer); if (caffe::mn::nGroup > 1) { diff --git a/tools/extra/DFA_multi_parser_time.py b/tools/extra/DFA_multi_parser_time.py new file mode 100644 index 000000000..58b1d0cb2 --- /dev/null +++ b/tools/extra/DFA_multi_parser_time.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python +# +# All modification made by Intel Corporation: Copyright (c) 2016 Intel Corporation +# +# 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. +# For the list of contributors go to https://github.com/BVLC/caffe/blob/master/CONTRIBUTORS.md +# +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * 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. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# 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. +# + +from extract_seconds import extract_datetime_from_line, get_log_created_year + +class time_DFA: + def __init__(self,log_path): + self.filepath = log_path + self.test_time = [] + self.snapshot_time = [] + self.total_test_time = 0.0 + self.total_snapshot_time = 0.0 + self.total_time = 0.0 + self.log_year = get_log_created_year(log_path) + + def parse_time(self): + f = open(self.filepath,'r') + line = '' + while True: + self.prev_line = line + line = f.readline() + + if not line: + if self.total_time == 0 and begin_time and self.prev_line: + quit_time = extract_datetime_from_line(self.prev_line, self.log_year) + self.total_time = (quit_time - begin_time).total_seconds() + break + + if '] Solving' in line: + begin_time = extract_datetime_from_line(line, self.log_year) + + if '] Optimization Done.' in line: + quit_time = extract_datetime_from_line(line, self.log_year) + self.total_time = (quit_time-begin_time).total_seconds() + break + + if '] Iteration' in line and 'lr' in line: + self.train_state(f) + + elif 'Testing net ' in line: + start_time = extract_datetime_from_line(line, self.log_year) + iter_num = line.split(' ')[-4] + end_time = self.test_state(f) + self.test_time.append({'config':iter_num,'time':(end_time-start_time).total_seconds()}) + self.total_test_time += (end_time-start_time).total_seconds() + + elif '] Snapshotting to binary proto' in line: + start_time = extract_datetime_from_line(self.prev_line, self.log_year) + end_time = self.snapshot_state(f) + if end_time: + self.total_snapshot_time += (end_time - start_time).total_seconds() + + elif '] Snapshot begin' in line: + start_time = extract_datetime_from_line(line, self.log_year) + end_time = self.accurate_snapshot_state(f) + if end_time: + self.total_snapshot_time += (end_time - start_time).total_seconds() + + def test_state(self, f): + line = f.readline() + while line: + if 'Test net output' not in line and 'Test net output' in self.prev_line: + return extract_datetime_from_line(self.prev_line, self.log_year) + else: + self.prev_line = line + line = f.readline() + return extract_datetime_from_line(self.prev_line, self.log_year) + + def train_state(self,f): + pass + + def snapshot_state(self,f): + line = f.readline() + while line: + if '] Snapshotting solver state' in line: + return extract_datetime_from_line(line, self.log_year) + else: + self.prev_line = line + line = f.readline() + return extract_datetime_from_line(self.prev_line, self.log_year) + + def accurate_snapshot_state(self,f): + line = f.readline() + while line: + if '] Snapshot end' in line: + return extract_datetime_from_line(line, self.log_year) + else: + self.prev_line = line + line = f.readline() + return extract_datetime_from_line(self.prev_line, self.log_year) diff --git a/tools/extra/README.md b/tools/extra/README.md new file mode 100644 index 000000000..7cd30b946 --- /dev/null +++ b/tools/extra/README.md @@ -0,0 +1,7 @@ +### Caffe_log_parser +The tool caffe_log_parser.py is used to parse both single-node and multi-node training log. +It produce the time to train, , loss trend, learning rate trend and test accuracy trend. +### Usage: +```bash +$CAFFE_HOME/tools/extra/caffe_log_parser.py +``` diff --git a/tools/extra/caffe_log_parser.py b/tools/extra/caffe_log_parser.py new file mode 100755 index 000000000..997f153e3 --- /dev/null +++ b/tools/extra/caffe_log_parser.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +# +# All modification made by Intel Corporation: Copyright (c) 2016 Intel Corporation +# +# 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. +# For the list of contributors go to https://github.com/BVLC/caffe/blob/master/CONTRIBUTORS.md +# +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * 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. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# 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. +# + +import os +import re +from DFA_multi_parser_time import time_DFA +import argparse +import log_plot + +parser = argparse.ArgumentParser(description='caffe log parser for training time and plot.') +parser.add_argument('--time',default = True, action = 'store_true') +parser.add_argument('log_file', help='caffe training log file') +parser.add_argument('--out_dir',help='relavent file output path',default='./img_out') +parser.add_argument('--plot', default = True, help=' --plot draw graph( Iter vs LR, Iter vs Loss and Iter vs acc) \n ', action = 'store_true') +args = parser.parse_args() + + +def cut_multi_log(path_to_multi_log): + multi_flag = False + pattern = re.compile('^\[0\]') + file_content = [] + with open(path_to_multi_log,'r') as f: + for line in f: + m = pattern.match(line) + if m: + file_content.append(line[3:]) + multi_flag = True + if multi_flag: + log_base_name = os.path.basename(path_to_multi_log) + cuted_log_path = os.path.join('/tmp/', log_base_name+'-0') + with open(cuted_log_path, 'w') as f: + for line in file_content: + f.write(line) + f.close() + return cuted_log_path + else: + return path_to_multi_log + + +def main(): + log_path = args.log_file + out_dir = args.out_dir + log_path_cuted = cut_multi_log(log_path) + if args.time: + test = time_DFA(log_path_cuted) + test.parse_time() + print 'Total time(hour) : ',test.total_time/60.0/60.0 + print 'Total test time(hour) :',test.total_test_time/60.0/60.0 + print 'Total snapshot time(hour) : ',test.total_snapshot_time/60.0/60.0 + print 'Total train time(hour) : ',(test.total_time - test.total_test_time - test.total_snapshot_time)/60.0/60.0 + + if args.plot: + if not os.path.exists(out_dir): + os.makedirs(out_dir) + log_plot.plot_train_graph(log_path_cuted, out_dir) + log_plot.plot_test_graph(log_path_cuted, out_dir) + print 'Plot train/test graph saved at : ', out_dir + + +if __name__ == '__main__': + main() + + diff --git a/tools/extra/extract_seconds.py b/tools/extra/extract_seconds.py index 0ea8be391..6a06fbda6 100755 --- a/tools/extra/extract_seconds.py +++ b/tools/extra/extract_seconds.py @@ -41,17 +41,23 @@ def extract_datetime_from_line(line, year): # Expected format: I0210 13:39:22.381027 25210 solver.cpp:204] Iteration 100, lr = 0.00992565 + raw_line = line line = line.strip().split() - month = int(line[0][1:3]) - day = int(line[0][3:]) - timestamp = line[1] - pos = timestamp.rfind('.') - ts = [int(x) for x in timestamp[:pos].split(':')] - hour = ts[0] - minute = ts[1] - second = ts[2] - microsecond = int(timestamp[pos + 1:]) - dt = datetime.datetime(year, month, day, hour, minute, second, microsecond) + try: + month = int(line[0][1:3]) + day = int(line[0][3:]) + timestamp = line[1] + pos = timestamp.rfind('.') + ts = [int(x) for x in timestamp[:pos].split(':')] + hour = ts[0] + minute = ts[1] + second = ts[2] + microsecond = int(timestamp[pos + 1:]) + dt = datetime.datetime(year, month, day, hour, minute, second, microsecond) + except ValueError: + print "Unexpected error when parsing line:" + print raw_line + sys.exit(1) return dt diff --git a/tools/extra/log_plot.py b/tools/extra/log_plot.py new file mode 100755 index 000000000..eb3d395a7 --- /dev/null +++ b/tools/extra/log_plot.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python +# +# All modification made by Intel Corporation: Copyright (c) 2016 Intel Corporation +# +# 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. +# For the list of contributors go to https://github.com/BVLC/caffe/blob/master/CONTRIBUTORS.md +# +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * 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. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# 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. +# + +import matplotlib as mpl +mpl.use('Agg') +import os +import sys +import re +import random +import matplotlib.pyplot as plt + + +def cut_multi_log(path_to_multi_log): + logfile_dict = {} + multi_flag = False + pattern = re.compile('\[\d\]') + with open(path_to_multi_log,'r') as f: + for line in f: + m = pattern.match(line) + if m: + multi_flag = True + num = m.group()[1] + if num in logfile_dict.keys(): + file_data = logfile_dict[num] + file_data.append(line[3:]) + else: + file_data = [] + file_data.append(line[3:]) + logfile_dict[num] = file_data + + log_name_list = [] + for key in logfile_dict.keys(): + log_base_name = os.path.basename(path_to_multi_log) + new_log_file_name = log_base_name + '-'+key + file_data=logfile_dict[key] + log_name_list.append(new_log_file_name) + with open(new_log_file_name,'w') as f: + for item in file_data: + f.write(item) + + if multi_flag == True: + return log_name_list + else: + return [path_to_multi_log] + +def lr_exist(filename): + with open(filename,'r') as f: + for line in f: + line = line.strip() + if line[0] != '#': + line_list = line.split() + if len(line_list) < 4: + return False + else: + return True + +def plot_train_graph(logpath,png_path): + get_data(logpath) + basename = os.path.basename(logpath) + train_file = basename+'.train' + loss_data = get_plot_data(train_file,0,2) + linewidth = 0.75 + color = [random.random(), random.random(), random.random()] + + plt.plot(loss_data[0], loss_data[1], label = 'Loss', color = color,marker = 'o', linewidth = linewidth,markersize=2) + plt.title('Training Graph: Iter vs Loss') + plt.xlabel('Iteration') + plt.ylabel('Loss') + loss_path = os.path.join(png_path,basename+'.loss.png') + plt.savefig(loss_path) + plt.show() + + if not lr_exist(train_file): + print "no learning rate data" + return + + LR_data = get_plot_data(train_file,0,3) + plt.clf() + color = [random.random(), random.random(), random.random()] + plt.plot(LR_data[0], LR_data[1], label = 'Learning Rate', color = color,marker = 'o', linewidth = linewidth,markersize=2) + plt.title('Training Graph: Iter vs Learning Rate') + plt.xlabel('Iteration') + plt.ylabel('Learning rate') + lr_path = os.path.join(png_path,basename+'.lr.png') + plt.savefig(lr_path) + plt.show() + +def plot_test_graph(logpath,png_path): + basename = os.path.basename(logpath) + get_data(logpath) + test_file = basename+'.test' + acc_data = get_plot_data(test_file,0,2) + linewidth = 0.75 + color = [random.random(), random.random(), random.random()] + plt.clf() + plt.plot(acc_data[0], acc_data[1], label = 'accuracy', color = color,marker = 'o', linewidth = linewidth) + plt.title('Test Graph: Accuracy') + plt.xlabel('Iteration') + plt.ylabel('acc') + test_path = os.path.join(png_path,basename+'.acc.png') + plt.savefig(test_path) + plt.show() + +def get_plot_data(filepath,idx1,idx2): + data = [[],[]] + base_line_flag = True + base_length = 4 + with open(filepath,'r') as f: + for line in f: + line = line.strip() + if line[0] != '#': + line_list = line.split() + if base_line_flag == True: + base_line_flag = False + base_length = len(line_list) + + if len(line_list) < base_length: + return data + data[0].append(float(line_list[idx1].strip())) + data[1].append(float(line_list[idx2].strip())) + return data + +def get_data(logpath): + sh_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'parse_log.sh') + if os.system('{} {}'.format(sh_path, logpath)): + sys.exit(1) + + diff --git a/tools/extra/plot_loss_trends.py b/tools/extra/plot_loss_trends.py new file mode 100644 index 000000000..80fc611ef --- /dev/null +++ b/tools/extra/plot_loss_trends.py @@ -0,0 +1,238 @@ +import os +import re +import argparse +from collections import defaultdict +import random +import matplotlib.colors as colors +import matplotlib.pyplot as plt +import matplotlib.legend as lgd +import matplotlib.markers as mks +import pdb + +class TrainLog(object): + '''train log file analyze and data collection''' + def __init__(self, log_files): + '''init func''' + self._log_files = log_files + self._multi_losses = defaultdict(list) + self._multi_lrs = defaultdict(list) + self._multi_iterations = defaultdict(list) + self._multi_mbox_losses = defaultdict(list) + self._multi_test_iterations = defaultdict(list) + self._multi_detection_accuracies = defaultdict(list) + self._parse_log() + self._is_detection = True if len(self._multi_mbox_losses) > 0 else False + + def _parse_log(self): + '''parse log files to obtain loss and iteration data''' + def obtain_log_name(log_file): + '''get log name from log file''' + if not os.path.isfile(log_file): + raise Exception('Error: log file {} does not exist.'.format(self.log_file)) + #Might need to change this to have a better representation in the future, so keep it here + return log_file + + def obtain_process_id(line): + '''get process id from line string''' + process_id_pattern = re.compile('\[\d+\]') + process_id_list = process_id_pattern.findall(line) + return '0' if len(process_id_list) == 0 else process_id_list[0][1:-1] + + loss_pattern = re.compile('.* Iteration \d+, loss = .*') + lr_pattern = re.compile('.* Iteration \d+, lr = .*') + mbox_loss_pattern = re.compile('.* Train net output #\d+: mbox_loss = .*') + detection_accuracy_pattern = re.compile('.* Test net output #\d+: detection_eval = .*') + test_iteration_pattern = re.compile('.* Iteration \d+, Testing net \(#\d+\).*') + for log_file in self._log_files: + log_name = obtain_log_name(log_file) + with open(log_file, 'r') as f: + for line in f.readlines(): + if re.match(loss_pattern, line): + if '0' != obtain_process_id(line): + continue + self._multi_losses[log_name].append(float(line.split()[-1])) + self._multi_iterations[log_name].append(int(line.split()[-4][:-1])) + elif re.match(lr_pattern, line): + if '0' != obtain_process_id(line): + continue + self._multi_lrs[log_name].append(float(line.split()[-1])) + elif re.match(mbox_loss_pattern, line): + if '0' != obtain_process_id(line): + continue + self._multi_mbox_losses[log_name].append(float(line.split()[-2])) + elif re.match(test_iteration_pattern, line): + if '0' != obtain_process_id(line): + continue + self._multi_test_iterations[log_name].append(float(line.split()[-4][:-1])) + elif re.match(detection_accuracy_pattern, line): + if '0' != obtain_process_id(line): + continue + self._multi_detection_accuracies[log_name].append(float(line.split()[-1])) + + @property + def is_detection(self): + '''check if current train log is generated by detection or classification''' + return self._is_detection + + @property + def iterations(self): + '''get iterations showed within log file''' + return self._multi_iterations + + @property + def test_iterations(self): + '''get test iterations showed within log file''' + return self._multi_test_iterations + + @property + def losses(self): + '''get losses data showed within log file''' + return self._multi_losses + + @property + def mbox_losses(self): + '''get mbox losses data showed within log file''' + return self._multi_mbox_losses + + @property + def lrs(self): + '''get lrs data showed within log file''' + return self._multi_lrs + + @property + def detection_accuracies(self): + '''get detection accuracies data showed within log file''' + return self._multi_detection_accuracies + +class PlotTrend(object): + '''plot single or multi trends within a fig''' + def __init__(self, y_items, x_items, out_dir): + '''init func''' + self.y_items = y_items + self.x_items = x_items + self.y_axis_name = y_items.keys()[0] + self.x_axis_name = x_items.keys()[0] + self.y_dict = y_items.values()[0] + self.x_dict = x_items.values()[0] + self.out_dir = out_dir + + def get_chart_type_description(self): + '''get chart type description''' + y_field, x_field = self.y_axis_name, self.x_axis_name + chart_type_desc_separator = ' vs. ' + return chart_type_desc_separator.join([y_field, x_field]) + + def get_legend_loc(self): + '''get legend loc''' + loc = 'lower right' + if self.y_axis_name.find('accuracy') != -1: + loc = 'lower right' + elif self.y_axis_name.find('loss') != -1 or self.y_axis_name.find('lr') != -1: + loc = 'upper right' + return loc + + def result_png_file(self, y_field): + '''generate result png file based on y field name''' + return self.out_dir + y_field + '_plot.png' + + def random_marker(self): + '''return random marker for plot''' + markers = mks.MarkerStyle.markers + num = len(markers.values()) + idx = random.randint(0, num - 1) + return markers.values()[idx] + + def get_data_label(self, log_name): + '''get data source label''' + label = log_name + return label + + def plot(self): + '''plot trends''' + if len(self.y_dict) != len(self.x_dict): + raise Exception("Error: y_dict and x_dict are not having equal size.") + self.plot_multiple_trends(self.y_dict, self.x_dict) + + def plot_multiple_trends(self, y_dict, x_dict): + '''plot y_items and x_items into a single fig''' + for key in y_dict: + y_list, x_list = y_dict[key], x_dict[key] + # Within current log, number of iterations is 1 more than number of lrs + if len(y_list) != len(x_list): + if len(y_list) < len(x_list) and len(y_list) > 0: + x_list = x_list[:len(y_list)] + else: + raise Exception('Error: y list has distinct length with x list') + color = [random.random(), random.random(), random.random()] + linewidth = 0.75 + label = self.get_data_label(key) + plt.plot(x_list, y_list, label = label, color = color, + linewidth = linewidth) + legend_loc = self.get_legend_loc() + plt.legend(loc = legend_loc, ncol = 1) # adjust ncol to fit the space + plt.title(self.get_chart_type_description()) + plt.xlabel(self.x_axis_name) + plt.ylabel(self.y_axis_name) + png_file = self.result_png_file(self.y_axis_name) + plt.savefig(png_file) + plt.show() + +def plot_loss_trends(train_log, out_dir): + '''plot loss trends of train logs''' + y_items = {'loss' : train_log.losses} + x_items = {'Iterations' : train_log.iterations} + #pdb.set_trace() + plot_trend = PlotTrend(y_items, x_items, out_dir) + plot_trend.plot() + +def plot_mbox_loss_trends(train_log, out_dir): + '''plot mbox loss trends of train logs''' + if not train_log.is_detection: return + y_items = {'mbox loss' : train_log.mbox_losses} + x_items = {'Iterations' : train_log.iterations} + plot_trend = PlotTrend(y_items, x_items, out_dir) + plot_trend.plot() + +def plot_lr_trends(train_log, out_dir): + '''plot lrs trend of train logs''' + y_items = {'lr' : train_log.lrs} + x_items = {'Iterations' : train_log.iterations} + plot_trend = PlotTrend(y_items, x_items, out_dir) + plot_trend.plot() + +def plot_detection_accuracy_trends(train_log, out_dir): + '''plot detection accuracy trend of train logs''' + if not train_log.is_detection: return + y_items = {'detection accuracy' : train_log.detection_accuracies} + x_items = {'Test iterations' : train_log.test_iterations} + plot_trend = PlotTrend(y_items, x_items, out_dir) + plot_trend.plot() + +def parse_args(): + '''parse program arguments''' + description = ('Parse Caffe training log and plot loss trends,\ + Before running it, you need to install tkinter package,\ + python plot_loss_trends.py -l/--log_files your/log/files \ + [-o/--output_dir your/output/directory, default is your pwd directory]') + parser = argparse.ArgumentParser(description = description) + parser.add_argument('-l', '--log_files', + nargs = '+', + help = 'caffe training log file path') + parser.add_argument('-o', '--output_dir', + default = './', + help = 'Directory in which to place output result files') + args = parser.parse_args() + return args + +def main(): + '''main routine''' + args = parse_args() + print args + train_log = TrainLog(args.log_files) + plot_loss_trends(train_log, args.output_dir) + plot_mbox_loss_trends(train_log, args.output_dir) + plot_lr_trends(train_log, args.output_dir) + plot_detection_accuracy_trends(train_log, args.output_dir) + +if __name__ == '__main__': + main()