parent
2f6d743342
commit
cfb9cfab9b
5 changed files with 34202 additions and 27 deletions
@ -1,5 +1,19 @@ |
||||
set(the_description "Deep neural netork module. Allow load models and make forward pass") |
||||
set(the_description "Deep neural network module. Allow load models and make forward pass") |
||||
set(OPENCV_MODULE_IS_PART_OF_WORLD OFF) |
||||
ocv_define_module(dnn opencv_imgproc opencv_core opencv_highgui WRAP python) |
||||
|
||||
option(WITH_PROTOBUF "Build with libprotobuf" ON) |
||||
|
||||
|
||||
if(NOT WITH_PROTOBUF) |
||||
message(ERROR "libprotobuf required for dnn module") |
||||
else() |
||||
message(STATUS "Find protobuf") |
||||
find_package( Protobuf REQUIRED ) |
||||
target_include_directories(opencv_dnn PUBLIC ${PROTOBUF_INCLUDE_DIR}) |
||||
target_link_libraries(opencv_dnn ${PROTOBUF_LIBRARIES}) |
||||
message(STATUS "Protobuf:" ${PROTOBUF_INCLUDE_DIR}) |
||||
message(STATUS "Protobuf:" ${PROTOBUF_LIBRARIES}) |
||||
endif() |
||||
|
||||
target_link_libraries(opencv_dnn) |
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,28 +1,78 @@ |
||||
#include "opencv2/dnn.hpp" |
||||
#include <iostream> |
||||
#include <fstream> |
||||
#include <google/protobuf/message.h> |
||||
#include <google/protobuf/text_format.h> |
||||
#include <google/protobuf/io/zero_copy_stream_impl.h> |
||||
#include "caffe.pb.h" |
||||
|
||||
namespace |
||||
{ |
||||
|
||||
} |
||||
|
||||
namespace cv |
||||
{ |
||||
namespace dnn |
||||
{
|
||||
{ |
||||
|
||||
Blob::Blob(Mat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
} |
||||
|
||||
Blob::Blob(const Mat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
Blob::Blob(Mat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
} |
||||
} |
||||
|
||||
Blob::Blob(const Mat &in) : _InputOutputArray(in) |
||||
{ |
||||
Blob::Blob(UMat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
} |
||||
} |
||||
|
||||
Blob::Blob(UMat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
} |
||||
Blob::Blob(const UMat &in) : _InputOutputArray(in) |
||||
{ |
||||
|
||||
Blob::Blob(const UMat &in) : _InputOutputArray(in) |
||||
{ |
||||
} |
||||
|
||||
|
||||
class CaffeImporter : public Importer |
||||
{ |
||||
|
||||
public: |
||||
|
||||
CaffeImporter(const char *pototxt, const char *caffeModel) |
||||
{ |
||||
std::ifstream proto_ifs(pototxt, std::ifstream::in); |
||||
std::ifstream model_ifs(caffeModel, std::ifstream::in); |
||||
|
||||
CV_Assert(proto_ifs.is_open() && model_ifs.is_open()); |
||||
|
||||
google::protobuf::io::IstreamInputStream proto_zcs(&proto_ifs); |
||||
google::protobuf::io::IstreamInputStream model_zcs(&model_ifs); |
||||
|
||||
//google::protobuf::Message msg_arch;
|
||||
//google::protobuf::Message msg_weights;
|
||||
caffe::NetParameter msg_arch; |
||||
|
||||
CV_Assert( google::protobuf::TextFormat::Parse(&proto_zcs, &msg_arch) ); |
||||
//CV_Assert( msg_weights.ParseFromZeroCopyStream(model_zcs) );
|
||||
|
||||
const google::protobuf::Descriptor *desc_arch = msg_arch.GetDescriptor(); |
||||
CV_Assert(desc_arch); |
||||
} |
||||
|
||||
void populateNetConfiguration(Ptr<NetConfiguration> config) |
||||
{ |
||||
|
||||
} |
||||
}; |
||||
|
||||
Ptr<Importer> createCaffeImporter(const String &prototxt, const String &caffeModel) |
||||
{ |
||||
return Ptr<Importer>(new CaffeImporter(prototxt.c_str(), caffeModel.c_str())); |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue