From 7fdda5c7c852a2dadb262b132ffb2cb6eadefa95 Mon Sep 17 00:00:00 2001 From: lzx1413 Date: Sun, 8 Oct 2017 17:16:34 +0800 Subject: [PATCH] add interp layer support nearest and bilinear --- src/CMakeLists.txt | 1 + src/layer/detectionoutput.cpp | 2 +- src/layer/interp.cpp | 136 ++++++++++++++++++++++++++++++++++ src/layer/interp.h | 49 ++++++++++++ tools/caffe.proto | 10 ++- tools/caffe2ncnn.cpp | 7 ++ 6 files changed, 203 insertions(+), 2 deletions(-) create mode 100644 src/layer/interp.cpp create mode 100644 src/layer/interp.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 38fd59ead..e0c50c7ce 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -137,6 +137,7 @@ ncnn_add_layer(PriorBox) ncnn_add_layer(ConcatV2) ncnn_add_layer(SoftmaxV2) ncnn_add_layer(DetectionOutput) +ncnn_add_layer(Interp) add_library(ncnn STATIC ${ncnn_SRCS}) diff --git a/src/layer/detectionoutput.cpp b/src/layer/detectionoutput.cpp index bb3dc5a89..6d0690b2d 100644 --- a/src/layer/detectionoutput.cpp +++ b/src/layer/detectionoutput.cpp @@ -322,4 +322,4 @@ int DetectionOutput::forward(const std::vector& bottom_blobs, std::vector 0. diff --git a/tools/caffe2ncnn.cpp b/tools/caffe2ncnn.cpp index deb296142..3b1244376 100644 --- a/tools/caffe2ncnn.cpp +++ b/tools/caffe2ncnn.cpp @@ -28,6 +28,7 @@ #include "caffe.pb.h" + static inline size_t alignSize(size_t sz, int n) { return (sz + n-1) & -n; @@ -663,6 +664,12 @@ int main(int argc, char** argv) fprintf(pp, " -233"); } } + else if (layer.type() == "Interp") + { + const caffe::InterpParameter& interp_param = layer.interp_param(); + fprintf(pp," %d %f %f %d %d",2, static_cast(interp_param.zoom_factor()), \ + static_cast(interp_param.zoom_factor()),interp_param.height(),interp_param.width()); + } else if (layer.type() == "LRN") { const caffe::LRNParameter& lrn_param = layer.lrn_param();