|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
#include <fstream> |
|
|
#include <iostream> |
|
|
#include <map> |
|
|
#include <string> |
|
|
#include <vector> |
|
|
|
|
|
#include "json/json.h" |
|
|
|
|
|
#ifdef _WIN32 |
|
|
#define OS_PATH_SEP "\\" |
|
|
#else |
|
|
#define OS_PATH_SEP "/" |
|
|
#endif |
|
|
|
|
|
namespace PaddleDetection { |
|
|
|
|
|
void load_jsonf(std::string jsonfile, Json::Value& jsondata); |
|
|
|
|
|
|
|
|
class ConfigPaser { |
|
|
public: |
|
|
ConfigPaser() {} |
|
|
|
|
|
~ConfigPaser() {} |
|
|
|
|
|
bool load_config(const std::string& model_dir, |
|
|
const std::string& cfg = "infer_cfg") { |
|
|
Json::Value config; |
|
|
load_jsonf(model_dir + OS_PATH_SEP + cfg + ".json", config); |
|
|
|
|
|
|
|
|
if (config.isMember("arch")) { |
|
|
arch_ = config["arch"].as<std::string>(); |
|
|
} else { |
|
|
std::cerr |
|
|
<< "Please set model arch," |
|
|
<< "support value : YOLO, SSD, RetinaNet, RCNN, Face, PicoDet, HRNet." |
|
|
<< std::endl; |
|
|
return false; |
|
|
} |
|
|
|
|
|
|
|
|
if (config.isMember("draw_threshold")) { |
|
|
draw_threshold_ = config["draw_threshold"].as<float>(); |
|
|
} else { |
|
|
std::cerr << "Please set draw_threshold." << std::endl; |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (config.isMember("Preprocess")) { |
|
|
preprocess_info_ = config["Preprocess"]; |
|
|
} else { |
|
|
std::cerr << "Please set Preprocess." << std::endl; |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (config.isMember("label_list")) { |
|
|
label_list_.clear(); |
|
|
for (auto item : config["label_list"]) { |
|
|
label_list_.emplace_back(item.as<std::string>()); |
|
|
} |
|
|
} else { |
|
|
std::cerr << "Please set label_list." << std::endl; |
|
|
return false; |
|
|
} |
|
|
|
|
|
|
|
|
if (config.isMember("NMS")) { |
|
|
nms_info_ = config["NMS"]; |
|
|
} |
|
|
|
|
|
if (config.isMember("fpn_stride")) { |
|
|
fpn_stride_.clear(); |
|
|
for (auto item : config["fpn_stride"]) { |
|
|
fpn_stride_.emplace_back(item.as<int>()); |
|
|
} |
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
float draw_threshold_; |
|
|
std::string arch_; |
|
|
Json::Value preprocess_info_; |
|
|
Json::Value nms_info_; |
|
|
std::vector<std::string> label_list_; |
|
|
std::vector<int> fpn_stride_; |
|
|
}; |
|
|
|
|
|
} |
|
|
|