From: 박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 Date: Thu, 26 Apr 2018 00:41:48 +0000 (+0900) Subject: [caffegen] Add 'decode' command (#148) X-Git-Tag: nncc_backup~2737 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebb66f89ce1f50db7b1f800e2da0d7d760e86f64;p=platform%2Fcore%2Fml%2Fnnfw.git [caffegen] Add 'decode' command (#148) This commit supports 'decode' command in caffegen tool which takes binary caffemodel via standard input, and shows its content in text format via standard output. Signed-off-by: Jonghyun Park --- diff --git a/contrib/caffegen/src/DecodeCommand.cpp b/contrib/caffegen/src/DecodeCommand.cpp new file mode 100644 index 0000000..abd62c3 --- /dev/null +++ b/contrib/caffegen/src/DecodeCommand.cpp @@ -0,0 +1,30 @@ +#include "DecodeCommand.h" + +#include + +#include +#include +#include + +#include + +int DecodeCommand::run(int, char **) const +{ + caffe::NetParameter param; + + // Load binary from standard input + google::protobuf::io::FileInputStream is{0}; + google::protobuf::io::CodedInputStream coded_is{&is}; + + if (!param.ParseFromCodedStream(&coded_is)) + { + std::cerr << "ERROR: Failed to parse caffemodel" << std::endl; + return 255; + } + + // Write text into standard input + google::protobuf::io::FileOutputStream os{1}; + google::protobuf::TextFormat::Print(param, &os); + + return 0; +} diff --git a/contrib/caffegen/src/DecodeCommand.h b/contrib/caffegen/src/DecodeCommand.h new file mode 100644 index 0000000..1fea0c4 --- /dev/null +++ b/contrib/caffegen/src/DecodeCommand.h @@ -0,0 +1,11 @@ +#ifndef __DECODE_COMMAND_H__ +#define __DECODE_COMMAND_H__ + +#include "Command.h" + +struct DecodeCommand final : public Command +{ + int run(int argc, char **argv) const override; +}; + +#endif // __DECODE_COMMAND_H__ diff --git a/contrib/caffegen/src/Driver.cpp b/contrib/caffegen/src/Driver.cpp index 76f7344..5581f1a 100644 --- a/contrib/caffegen/src/Driver.cpp +++ b/contrib/caffegen/src/Driver.cpp @@ -1,5 +1,6 @@ #include "FillCommand.h" #include "EncodeCommand.h" +#include "DecodeCommand.h" #include @@ -12,6 +13,7 @@ int main(int argc, char **argv) commands["fill"] = nncc::foundation::make_unique(); commands["encode"] = nncc::foundation::make_unique(); + commands["decode"] = nncc::foundation::make_unique(); return commands.at(argv[1])->run(argc - 2, argv + 2); }