From 98173ec15c9a3b54c4cace8b1142454e41f8b9d7 Mon Sep 17 00:00:00 2001 From: Micaela Verucchi Date: Sat, 30 May 2020 17:57:48 +0200 Subject: [PATCH 1/3] Add darknetParseFields Signed-off-by: Micaela Verucchi --- include/tkDNN/DarknetParser.h | 41 ++++++++++++++++++++++++++++++++++- tests/yolo3/yolo3.cpp | 5 +++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/include/tkDNN/DarknetParser.h b/include/tkDNN/DarknetParser.h index c921d2c..09d8dce 100644 --- a/include/tkDNN/DarknetParser.h +++ b/include/tkDNN/DarknetParser.h @@ -7,9 +7,21 @@ namespace tk { namespace dnn { struct darknetFields_t{ int width = 0; int height = 0; + int channels = 0; + int batch_normalize=0; + int filters=0; + int size=0; + int stride=0; + int pad=0; + std::string activation = ""; }; + std::ostream& operator<<(std::ostream& os, const darknetFields_t& f){ + os << f.width << " " << f.height << " " << f.channels << " " << f.batch_normalize<< " " << f.filters<< " " << f.size<< " " << f.stride << " " << f.pad << " " << f.activation; + return os; + } + std::string darknetParseType(const std::string& line){ size_t start = line.find("["); size_t end = line.find("]"); @@ -20,8 +32,35 @@ namespace tk { namespace dnn { return type; } - darknetFields_t parseFields(const std::string& line){ + bool divideNameAndValue(const std::string& line, std::string&name, std::string& value){ + size_t sep = line.find("="); + if(sep == std::string::npos) + return false; + name = line.substr(0, sep); + value = line.substr(sep+1, line.size() - (sep+1)); + return true; + } + + bool darknetParseFields(const std::string& line, darknetFields_t& fields){ + + std::string name,value; + if(!divideNameAndValue(line, name, value)) + return false; + std::cout< Date: Sat, 30 May 2020 18:00:22 +0200 Subject: [PATCH 2/3] Add some fields Signed-off-by: Micaela Verucchi --- include/tkDNN/DarknetParser.h | 8 ++++++++ tests/yolo3/yolo3.cpp | 2 ++ 2 files changed, 10 insertions(+) diff --git a/include/tkDNN/DarknetParser.h b/include/tkDNN/DarknetParser.h index 09d8dce..d8e8b59 100644 --- a/include/tkDNN/DarknetParser.h +++ b/include/tkDNN/DarknetParser.h @@ -59,6 +59,14 @@ namespace tk { namespace dnn { fields.batch_normalize = std::stoi(value); else if (name == "filters") fields.filters = std::stoi(value); + else if (name == "size") + fields.size = std::stoi(value); + else if (name == "stride") + fields.stride = std::stoi(value); + else if (name == "pad") + fields.pad = std::stoi(value); + else if (name == "activation") + fields.activation = value; return true; } diff --git a/tests/yolo3/yolo3.cpp b/tests/yolo3/yolo3.cpp index f74faa5..f1602da 100644 --- a/tests/yolo3/yolo3.cpp +++ b/tests/yolo3/yolo3.cpp @@ -10,6 +10,8 @@ int main() { tk::dnn::darknetFields_t f; tk::dnn::darknetParseFields("width=40", f); tk::dnn::darknetParseFields("height=40", f); + tk::dnn::darknetParseFields("channels=40", f); + tk::dnn::darknetParseFields("activation=leaky", f); std::cout< Date: Sat, 30 May 2020 18:10:14 +0200 Subject: [PATCH 3/3] Modify darknetFields_t Signed-off-by: Micaela Verucchi --- include/tkDNN/DarknetParser.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/include/tkDNN/DarknetParser.h b/include/tkDNN/DarknetParser.h index d8e8b59..8c8309f 100644 --- a/include/tkDNN/DarknetParser.h +++ b/include/tkDNN/DarknetParser.h @@ -9,16 +9,25 @@ namespace tk { namespace dnn { int height = 0; int channels = 0; int batch_normalize=0; + int groups = 0; int filters=0; - int size=0; - int stride=0; - int pad=0; + int size_x=0; + int size_y=0; + int stride_x=0; + int stride_y=0; + int padding_x = 0; + int padding_y = 0; + int n_mask = 0; + int classes = 0; + int num = 0; + float scale_xy = 0; + std::vector layers; std::string activation = ""; }; std::ostream& operator<<(std::ostream& os, const darknetFields_t& f){ - os << f.width << " " << f.height << " " << f.channels << " " << f.batch_normalize<< " " << f.filters<< " " << f.size<< " " << f.stride << " " << f.pad << " " << f.activation; + os << f.width << " " << f.height << " " << f.channels << " " << f.batch_normalize<< " " << f.filters << " " << " " << f.activation; return os; } @@ -59,12 +68,6 @@ namespace tk { namespace dnn { fields.batch_normalize = std::stoi(value); else if (name == "filters") fields.filters = std::stoi(value); - else if (name == "size") - fields.size = std::stoi(value); - else if (name == "stride") - fields.stride = std::stoi(value); - else if (name == "pad") - fields.pad = std::stoi(value); else if (name == "activation") fields.activation = value;