From e4bf148cddf277834e57c9afeec8daff8378a655 Mon Sep 17 00:00:00 2001 From: Ricardo Ribalda Delgado Date: Wed, 22 Nov 2017 15:27:07 +0100 Subject: [PATCH] Fix: File already exists in database: caffe.proto Fixes error when importing python cv Upstream-status: Backport https://github.com/opencv/opencv/pull/10092 Signed-off-by: Ricardo Ribalda Delgado --- modules/dnn/CMakeLists.txt | 6 +++--- modules/dnn/src/caffe/caffe_importer.cpp | 1 - modules/dnn/src/caffe/caffe_io.cpp | 1 - modules/dnn/src/caffe/caffe_io.hpp | 2 +- modules/dnn/src/caffe/{caffe.proto => opencv-caffe.proto} | 0 5 files changed, 4 insertions(+), 6 deletions(-) rename modules/dnn/src/caffe/{caffe.proto => opencv-caffe.proto} (100%) diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt index c6329a742263..8ef00ef983ff 100644 --- a/modules/dnn/CMakeLists.txt +++ b/modules/dnn/CMakeLists.txt @@ -55,13 +55,13 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS if(PROTOBUF_UPDATE_FILES) file(GLOB proto_files src/tensorflow/*.proto) - list(APPEND proto_files src/caffe/caffe.proto) + list(APPEND proto_files src/caffe/opencv-caffe.proto) PROTOBUF_GENERATE_CPP(Protobuf_HDRS Protobuf_SRCS ${proto_files}) else() file(GLOB fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/tensorflow/*.cc) file(GLOB fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/tensorflow/*.h) - list(APPEND fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/caffe.pb.cc) - list(APPEND fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/caffe.pb.h) + list(APPEND fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/opencv-caffe.pb.cc) + list(APPEND fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/opencv-caffe.pb.h) list(APPEND Protobuf_SRCS ${fw_srcs}) list(APPEND Protobuf_HDRS ${fw_hdrs}) list(APPEND Protobuf_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe) diff --git a/modules/dnn/src/caffe/caffe_importer.cpp b/modules/dnn/src/caffe/caffe_importer.cpp index c075651b95b3..2c977c84b0f4 100644 --- a/modules/dnn/src/caffe/caffe_importer.cpp +++ b/modules/dnn/src/caffe/caffe_importer.cpp @@ -42,7 +42,6 @@ #include "../precomp.hpp" #ifdef HAVE_PROTOBUF -#include "caffe.pb.h" #include #include diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp index 0f46ea77df9a..1d3c518f1328 100644 --- a/modules/dnn/src/caffe/caffe_io.cpp +++ b/modules/dnn/src/caffe/caffe_io.cpp @@ -99,7 +99,6 @@ #include #include -#include "caffe.pb.h" #include "caffe_io.hpp" #include "glog_emulator.hpp" diff --git a/modules/dnn/src/caffe/caffe_io.hpp b/modules/dnn/src/caffe/caffe_io.hpp index 09bc5709a24e..f5912c3bcec1 100644 --- a/modules/dnn/src/caffe/caffe_io.hpp +++ b/modules/dnn/src/caffe/caffe_io.hpp @@ -91,7 +91,7 @@ #define __OPENCV_DNN_CAFFE_IO_HPP__ #ifdef HAVE_PROTOBUF -#include "caffe.pb.h" +#include "opencv-caffe.pb.h" namespace cv { namespace dnn { diff --git a/modules/dnn/src/caffe/caffe.proto b/modules/dnn/src/caffe/opencv-caffe.proto similarity index 100% rename from modules/dnn/src/caffe/caffe.proto rename to modules/dnn/src/caffe/opencv-caffe.proto diff --git a/modules/dnn/src/layers/detection_output_layer.cpp b/modules/dnn/src/layers/detection_output_layer.cpp index 0b72326f7e7d..f413bad5b81a 100644 --- a/modules/dnn/src/layers/detection_output_layer.cpp +++ b/modules/dnn/src/layers/detection_output_layer.cpp @@ -44,7 +44,7 @@ #include "layers_common.hpp" #include #include -#include +#include namespace cv { diff --git a/modules/dnn/src/caffe/caffe_importer.cpp b/modules/dnn/src/caffe/caffe_importer.cpp index 2c977c84b0f4..a1827a381117 100644 --- a/modules/dnn/src/caffe/caffe_importer.cpp +++ b/modules/dnn/src/caffe/caffe_importer.cpp @@ -78,8 +78,8 @@ static cv::String toString(const T &v) class CaffeImporter : public Importer { - caffe::NetParameter net; - caffe::NetParameter netBinary; + opencvcaffe::NetParameter net; + opencvcaffe::NetParameter netBinary; public: @@ -197,7 +197,7 @@ public: } } - void blobShapeFromProto(const caffe::BlobProto &pbBlob, MatShape& shape) + void blobShapeFromProto(const opencvcaffe::BlobProto &pbBlob, MatShape& shape) { shape.clear(); if (pbBlob.has_num() || pbBlob.has_channels() || pbBlob.has_height() || pbBlob.has_width()) @@ -209,7 +209,7 @@ public: } else if (pbBlob.has_shape()) { - const caffe::BlobShape &_shape = pbBlob.shape(); + const opencvcaffe::BlobShape &_shape = pbBlob.shape(); for (int i = 0; i < _shape.dim_size(); i++) shape.push_back((int)_shape.dim(i)); @@ -218,7 +218,7 @@ public: CV_Error(Error::StsError, "Unknown shape of input blob"); } - void blobFromProto(const caffe::BlobProto &pbBlob, cv::Mat &dstBlob) + void blobFromProto(const opencvcaffe::BlobProto &pbBlob, cv::Mat &dstBlob) { MatShape shape; blobShapeFromProto(pbBlob, shape); @@ -233,7 +233,7 @@ public: dstData[i] = pbBlob.data(i); } - void extractBinaryLayerParms(const caffe::LayerParameter& layer, LayerParams& layerParams) + void extractBinaryLayerParms(const opencvcaffe::LayerParameter& layer, LayerParams& layerParams) { const std::string &name = layer.name(); @@ -247,7 +247,7 @@ public: if (li == netBinary.layer_size() || netBinary.layer(li).blobs_size() == 0) return; - const caffe::LayerParameter &binLayer = netBinary.layer(li); + const opencvcaffe::LayerParameter &binLayer = netBinary.layer(li); layerParams.blobs.resize(binLayer.blobs_size()); for (int bi = 0; bi < binLayer.blobs_size(); bi++) { @@ -289,7 +289,7 @@ public: for (int li = 0; li < layersSize; li++) { - const caffe::LayerParameter &layer = net.layer(li); + const opencvcaffe::LayerParameter &layer = net.layer(li); String name = layer.name(); String type = layer.type(); LayerParams layerParams; @@ -313,7 +313,7 @@ public: addedBlobs.clear(); } - void addOutput(const caffe::LayerParameter &layer, int layerId, int outNum) + void addOutput(const opencvcaffe::LayerParameter &layer, int layerId, int outNum) { const std::string &name = layer.top(outNum); diff --git a/modules/dnn/src/caffe/caffe_io.hpp b/modules/dnn/src/caffe/caffe_io.hpp index f5912c3bcec1..24cd5fa254eb 100644 --- a/modules/dnn/src/caffe/caffe_io.hpp +++ b/modules/dnn/src/caffe/caffe_io.hpp @@ -98,9 +98,9 @@ namespace dnn { // Read parameters from a file into a NetParameter proto message. void ReadNetParamsFromTextFileOrDie(const char* param_file, - caffe::NetParameter* param); + opencvcaffe::NetParameter* param); void ReadNetParamsFromBinaryFileOrDie(const char* param_file, - caffe::NetParameter* param); + opencvcaffe::NetParameter* param); } } diff --git a/modules/dnn/src/caffe/opencv-caffe.proto b/modules/dnn/src/caffe/opencv-caffe.proto index 3d23fb48ea6a..df4e1d3269ae 100644 --- a/modules/dnn/src/caffe/opencv-caffe.proto +++ b/modules/dnn/src/caffe/opencv-caffe.proto @@ -48,7 +48,7 @@ syntax = "proto2"; -package caffe; +package opencvcaffe; // Specifies the shape (dimensions) of a Blob. message BlobShape { diff --git a/modules/dnn/src/layers/detection_output_layer.cpp b/modules/dnn/src/layers/detection_output_layer.cpp index f413bad5b81a..832c257eebf9 100644 --- a/modules/dnn/src/layers/detection_output_layer.cpp +++ b/modules/dnn/src/layers/detection_output_layer.cpp @@ -72,7 +72,7 @@ public: int _backgroundLabelId; - typedef caffe::PriorBoxParameter_CodeType CodeType; + typedef opencvcaffe::PriorBoxParameter_CodeType CodeType; CodeType _codeType; bool _varianceEncodedInTarget; @@ -85,7 +85,7 @@ public: enum { _numAxes = 4 }; static const std::string _layerName; - typedef std::map > LabelBBox; + typedef std::map > LabelBBox; bool getParameterDict(const LayerParams ¶ms, const std::string ¶meterName, @@ -131,11 +131,11 @@ public: { String codeTypeString = params.get("code_type").toLowerCase(); if (codeTypeString == "corner") - _codeType = caffe::PriorBoxParameter_CodeType_CORNER; + _codeType = opencvcaffe::PriorBoxParameter_CodeType_CORNER; else if (codeTypeString == "center_size") - _codeType = caffe::PriorBoxParameter_CodeType_CENTER_SIZE; + _codeType = opencvcaffe::PriorBoxParameter_CodeType_CENTER_SIZE; else - _codeType = caffe::PriorBoxParameter_CodeType_CORNER; + _codeType = opencvcaffe::PriorBoxParameter_CodeType_CORNER; } DetectionOutputLayerImpl(const LayerParams ¶ms) @@ -215,7 +215,7 @@ public: GetConfidenceScores(confidenceData, num, numPriors, _numClasses, allConfidenceScores); // Retrieve all prior bboxes - std::vector priorBBoxes; + std::vector priorBBoxes; std::vector > priorVariances; GetPriorBBoxes(priorData, numPriors, priorBBoxes, priorVariances); @@ -272,7 +272,7 @@ public: for (size_t j = 0; j < indices.size(); ++j, ++count) { int idx = indices[j]; - const caffe::NormalizedBBox& decode_bbox = label_bboxes->second[idx]; + const opencvcaffe::NormalizedBBox& decode_bbox = label_bboxes->second[idx]; outputsData[count * 7] = i; outputsData[count * 7 + 1] = label; outputsData[count * 7 + 2] = scores[idx]; @@ -355,7 +355,7 @@ public: // Compute bbox size template - static float BBoxSize(const caffe::NormalizedBBox& bbox) + static float BBoxSize(const opencvcaffe::NormalizedBBox& bbox) { if (bbox.xmax() < bbox.xmin() || bbox.ymax() < bbox.ymin()) { @@ -388,10 +388,10 @@ public: // Decode a bbox according to a prior bbox template static void DecodeBBox( - const caffe::NormalizedBBox& prior_bbox, const std::vector& prior_variance, + const opencvcaffe::NormalizedBBox& prior_bbox, const std::vector& prior_variance, const CodeType code_type, - const bool clip_bbox, const caffe::NormalizedBBox& bbox, - caffe::NormalizedBBox& decode_bbox) + const bool clip_bbox, const opencvcaffe::NormalizedBBox& bbox, + opencvcaffe::NormalizedBBox& decode_bbox) { float bbox_xmin = variance_encoded_in_target ? bbox.xmin() : prior_variance[0] * bbox.xmin(); float bbox_ymin = variance_encoded_in_target ? bbox.ymin() : prior_variance[1] * bbox.ymin(); @@ -399,13 +399,13 @@ public: float bbox_ymax = variance_encoded_in_target ? bbox.ymax() : prior_variance[3] * bbox.ymax(); switch(code_type) { - case caffe::PriorBoxParameter_CodeType_CORNER: + case opencvcaffe::PriorBoxParameter_CodeType_CORNER: decode_bbox.set_xmin(prior_bbox.xmin() + bbox_xmin); decode_bbox.set_ymin(prior_bbox.ymin() + bbox_ymin); decode_bbox.set_xmax(prior_bbox.xmax() + bbox_xmax); decode_bbox.set_ymax(prior_bbox.ymax() + bbox_ymax); break; - case caffe::PriorBoxParameter_CodeType_CENTER_SIZE: + case opencvcaffe::PriorBoxParameter_CodeType_CENTER_SIZE: { float prior_width = prior_bbox.xmax() - prior_bbox.xmin(); CV_Assert(prior_width > 0); @@ -431,7 +431,7 @@ public: }; if (clip_bbox) { - // Clip the caffe::NormalizedBBox such that the range for each corner is [0, 1] + // Clip the opencvcaffe::NormalizedBBox such that the range for each corner is [0, 1] decode_bbox.set_xmin(std::max(std::min(decode_bbox.xmin(), 1.f), 0.f)); decode_bbox.set_ymin(std::max(std::min(decode_bbox.ymin(), 1.f), 0.f)); decode_bbox.set_xmax(std::max(std::min(decode_bbox.xmax(), 1.f), 0.f)); @@ -443,11 +443,11 @@ public: // Decode a set of bboxes according to a set of prior bboxes static void DecodeBBoxes( - const std::vector& prior_bboxes, + const std::vector& prior_bboxes, const std::vector >& prior_variances, const CodeType code_type, const bool variance_encoded_in_target, - const bool clip_bbox, const std::vector& bboxes, - std::vector& decode_bboxes) + const bool clip_bbox, const std::vector& bboxes, + std::vector& decode_bboxes) { CV_Assert(prior_bboxes.size() == prior_variances.size()); CV_Assert(prior_bboxes.size() == bboxes.size()); @@ -470,7 +470,7 @@ public: // Decode all bboxes in a batch static void DecodeBBoxesAll(const std::vector& all_loc_preds, - const std::vector& prior_bboxes, + const std::vector& prior_bboxes, const std::vector >& prior_variances, const int num, const bool share_location, const int num_loc_classes, const int background_label_id, @@ -503,10 +503,10 @@ public: // Get prior bounding boxes from prior_data // prior_data: 1 x 2 x num_priors * 4 x 1 blob. // num_priors: number of priors. - // prior_bboxes: stores all the prior bboxes in the format of caffe::NormalizedBBox. + // prior_bboxes: stores all the prior bboxes in the format of opencvcaffe::NormalizedBBox. // prior_variances: stores all the variances needed by prior bboxes. static void GetPriorBBoxes(const float* priorData, const int& numPriors, - std::vector& priorBBoxes, + std::vector& priorBBoxes, std::vector >& priorVariances) { priorBBoxes.clear(); priorBBoxes.resize(numPriors); @@ -514,7 +514,7 @@ public: for (int i = 0; i < numPriors; ++i) { int startIdx = i * 4; - caffe::NormalizedBBox& bbox = priorBBoxes[i]; + opencvcaffe::NormalizedBBox& bbox = priorBBoxes[i]; bbox.set_xmin(priorData[startIdx]); bbox.set_ymin(priorData[startIdx + 1]); bbox.set_xmax(priorData[startIdx + 2]); @@ -565,7 +565,7 @@ public: { labelBBox[label].resize(numPredsPerClass); } - caffe::NormalizedBBox& bbox = labelBBox[label][p]; + opencvcaffe::NormalizedBBox& bbox = labelBBox[label][p]; bbox.set_xmin(locData[startIdx + c * 4]); bbox.set_ymin(locData[startIdx + c * 4 + 1]); bbox.set_xmax(locData[startIdx + c * 4 + 2]); @@ -612,7 +612,7 @@ public: // nms_threshold: a threshold used in non maximum suppression. // top_k: if not -1, keep at most top_k picked indices. // indices: the kept indices of bboxes after nms. - static void ApplyNMSFast(const std::vector& bboxes, + static void ApplyNMSFast(const std::vector& bboxes, const std::vector& scores, const float score_threshold, const float nms_threshold, const float eta, const int top_k, std::vector& indices) @@ -674,10 +674,10 @@ public: // Compute the jaccard (intersection over union IoU) overlap between two bboxes. template - static float JaccardOverlap(const caffe::NormalizedBBox& bbox1, - const caffe::NormalizedBBox& bbox2) + static float JaccardOverlap(const opencvcaffe::NormalizedBBox& bbox1, + const opencvcaffe::NormalizedBBox& bbox2) { - caffe::NormalizedBBox intersect_bbox; + opencvcaffe::NormalizedBBox intersect_bbox; if (bbox2.xmin() > bbox1.xmax() || bbox2.xmax() < bbox1.xmin() || bbox2.ymin() > bbox1.ymax() || bbox2.ymax() < bbox1.ymin()) { diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp index 1d3c518f1328..3cf6e255aa60 100644 --- a/modules/dnn/src/caffe/caffe_io.cpp +++ b/modules/dnn/src/caffe/caffe_io.cpp @@ -107,7 +107,7 @@ namespace dnn { using std::string; using std::map; -using namespace caffe; +using namespace opencvcaffe; using namespace ::google::protobuf; using namespace ::google::protobuf::io;