forked from floratest1/SpireCV
finish model manager v1
This commit is contained in:
parent
4a2cf609c4
commit
f06151c7a0
|
@ -1,6 +1,7 @@
|
||||||
#include "common_det_cuda_impl.h"
|
#include "common_det_cuda_impl.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include "sv_util.h"
|
||||||
|
|
||||||
#define SV_MODEL_DIR "/SpireCV/models/"
|
#define SV_MODEL_DIR "/SpireCV/models/"
|
||||||
#define SV_ROOT_DIR "/SpireCV/"
|
#define SV_ROOT_DIR "/SpireCV/"
|
||||||
|
@ -364,16 +365,44 @@ bool CommonObjectDetectorCUDAImpl::cudaSetup(CommonObjectDetectorBase* base_, bo
|
||||||
double thrs_nms = base_->getThrsNms();
|
double thrs_nms = base_->getThrsNms();
|
||||||
|
|
||||||
std::string engine_fn = get_home() + SV_MODEL_DIR + dataset + ".engine";
|
std::string engine_fn = get_home() + SV_MODEL_DIR + dataset + ".engine";
|
||||||
|
std::vector<std::string> files;
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files, "-online.engine", dataset + "-yolov5s-");
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files.rbegin(), files.rend(), _comp_str_lesser);
|
||||||
|
engine_fn = get_home() + SV_MODEL_DIR + files[0];
|
||||||
|
}
|
||||||
|
|
||||||
if (input_w == 1280)
|
if (input_w == 1280)
|
||||||
|
{
|
||||||
|
files.clear();
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files, "-online.engine", dataset + "-yolov5s6-");
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files.rbegin(), files.rend(), _comp_str_lesser);
|
||||||
|
engine_fn = get_home() + SV_MODEL_DIR + files[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
engine_fn = get_home() + SV_MODEL_DIR + dataset + "_HD.engine";
|
engine_fn = get_home() + SV_MODEL_DIR + dataset + "_HD.engine";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (with_segmentation)
|
if (with_segmentation)
|
||||||
{
|
{
|
||||||
base_->setInputH(640);
|
base_->setInputH(640);
|
||||||
base_->setInputW(640);
|
base_->setInputW(640);
|
||||||
|
files.clear();
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files, "-online.engine", dataset + "-yolov5s-seg-");
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files.rbegin(), files.rend(), _comp_str_lesser);
|
||||||
|
engine_fn = get_home() + SV_MODEL_DIR + files[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
engine_fn = get_home() + SV_MODEL_DIR + dataset + "_SEG.engine";
|
engine_fn = get_home() + SV_MODEL_DIR + dataset + "_SEG.engine";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
std::cout << "Load: " << engine_fn << std::endl;
|
std::cout << "Load: " << engine_fn << std::endl;
|
||||||
if (!is_file_exist(engine_fn))
|
if (!is_file_exist(engine_fn))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "landing_det_cuda_impl.h"
|
#include "landing_det_cuda_impl.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include "sv_util.h"
|
||||||
|
|
||||||
#define SV_MODEL_DIR "/SpireCV/models/"
|
#define SV_MODEL_DIR "/SpireCV/models/"
|
||||||
#define SV_ROOT_DIR "/SpireCV/"
|
#define SV_ROOT_DIR "/SpireCV/"
|
||||||
|
@ -50,6 +51,16 @@ bool LandingMarkerDetectorCUDAImpl::cudaSetup()
|
||||||
{
|
{
|
||||||
#ifdef WITH_CUDA
|
#ifdef WITH_CUDA
|
||||||
std::string trt_model_fn = get_home() + SV_MODEL_DIR + "LandingMarker.engine";
|
std::string trt_model_fn = get_home() + SV_MODEL_DIR + "LandingMarker.engine";
|
||||||
|
|
||||||
|
std::vector<std::string> files;
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files, "-online.engine", "LandingMarker-");
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files.rbegin(), files.rend(), _comp_str_lesser);
|
||||||
|
trt_model_fn = get_home() + SV_MODEL_DIR + files[0];
|
||||||
|
}
|
||||||
|
std::cout << "Load: " << trt_model_fn << std::endl;
|
||||||
|
|
||||||
if (!is_file_exist(trt_model_fn))
|
if (!is_file_exist(trt_model_fn))
|
||||||
{
|
{
|
||||||
throw std::runtime_error("SpireCV (104) Error loading the LandingMarker TensorRT model (File Not Exist)");
|
throw std::runtime_error("SpireCV (104) Error loading the LandingMarker TensorRT model (File Not Exist)");
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "sot_ocv470_impl.h"
|
#include "sot_ocv470_impl.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include "sv_util.h"
|
||||||
|
|
||||||
#define SV_MODEL_DIR "/SpireCV/models/"
|
#define SV_MODEL_DIR "/SpireCV/models/"
|
||||||
#define SV_ROOT_DIR "/SpireCV/"
|
#define SV_ROOT_DIR "/SpireCV/"
|
||||||
|
@ -31,9 +32,39 @@ bool SingleObjectTrackerOCV470Impl::ocv470Setup(SingleObjectTrackerBase* base_)
|
||||||
std::string kernel_cls1 = get_home() + SV_MODEL_DIR + "dasiamrpn_kernel_cls1.onnx";
|
std::string kernel_cls1 = get_home() + SV_MODEL_DIR + "dasiamrpn_kernel_cls1.onnx";
|
||||||
std::string kernel_r1 = get_home() + SV_MODEL_DIR + "dasiamrpn_kernel_r1.onnx";
|
std::string kernel_r1 = get_home() + SV_MODEL_DIR + "dasiamrpn_kernel_r1.onnx";
|
||||||
|
|
||||||
|
std::vector<std::string> files1, files2, files3;
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files1, "-online.engine", "DaSiamRPN-Model-");
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files2, "-online.engine", "DaSiamRPN-Kernel-CLS1-");
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files3, "-online.engine", "DaSiamRPN-Kernel-R1-");
|
||||||
|
if (files1.size() > 0 && files2.size() > 0 && files3.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files1.rbegin(), files1.rend(), _comp_str_lesser);
|
||||||
|
std::sort(files2.rbegin(), files2.rend(), _comp_str_lesser);
|
||||||
|
std::sort(files3.rbegin(), files3.rend(), _comp_str_lesser);
|
||||||
|
net = get_home() + SV_MODEL_DIR + files1[0];
|
||||||
|
kernel_cls1 = get_home() + SV_MODEL_DIR + files2[0];
|
||||||
|
kernel_r1 = get_home() + SV_MODEL_DIR + files3[0];
|
||||||
|
}
|
||||||
|
std::cout << "Load: " << net << std::endl;
|
||||||
|
std::cout << "Load: " << kernel_cls1 << std::endl;
|
||||||
|
std::cout << "Load: " << kernel_r1 << std::endl;
|
||||||
|
|
||||||
std::string backbone = get_home() + SV_MODEL_DIR + "nanotrack_backbone_sim.onnx";
|
std::string backbone = get_home() + SV_MODEL_DIR + "nanotrack_backbone_sim.onnx";
|
||||||
std::string neckhead = get_home() + SV_MODEL_DIR + "nanotrack_head_sim.onnx";
|
std::string neckhead = get_home() + SV_MODEL_DIR + "nanotrack_head_sim.onnx";
|
||||||
|
|
||||||
|
std::vector<std::string> files4, files5;
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files4, "-online.engine", "NanoTrack-Backbone-SIM-");
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files5, "-online.engine", "NanoTrack-Head-SIM-");
|
||||||
|
if (files4.size() > 0 && files5.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files4.rbegin(), files4.rend(), _comp_str_lesser);
|
||||||
|
std::sort(files5.rbegin(), files5.rend(), _comp_str_lesser);
|
||||||
|
backbone = get_home() + SV_MODEL_DIR + files4[0];
|
||||||
|
neckhead = get_home() + SV_MODEL_DIR + files5[0];
|
||||||
|
}
|
||||||
|
std::cout << "Load: " << backbone << std::endl;
|
||||||
|
std::cout << "Load: " << neckhead << std::endl;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TrackerNano::Params nano_params;
|
TrackerNano::Params nano_params;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "veri_det_cuda_impl.h"
|
#include "veri_det_cuda_impl.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include "sv_util.h"
|
||||||
|
|
||||||
#define SV_MODEL_DIR "/SpireCV/models/"
|
#define SV_MODEL_DIR "/SpireCV/models/"
|
||||||
#define SV_ROOT_DIR "/SpireCV/"
|
#define SV_ROOT_DIR "/SpireCV/"
|
||||||
|
@ -75,6 +76,16 @@ namespace sv
|
||||||
{
|
{
|
||||||
#ifdef WITH_CUDA
|
#ifdef WITH_CUDA
|
||||||
std::string trt_model_fn = get_home() + SV_MODEL_DIR + "veri.engine";
|
std::string trt_model_fn = get_home() + SV_MODEL_DIR + "veri.engine";
|
||||||
|
|
||||||
|
std::vector<std::string> files;
|
||||||
|
_list_dir(get_home() + SV_MODEL_DIR, files, "-online.engine", "VERI-");
|
||||||
|
if (files.size() > 0)
|
||||||
|
{
|
||||||
|
std::sort(files.rbegin(), files.rend(), _comp_str_lesser);
|
||||||
|
trt_model_fn = get_home() + SV_MODEL_DIR + files[0];
|
||||||
|
}
|
||||||
|
std::cout << "Load: " << trt_model_fn << std::endl;
|
||||||
|
|
||||||
if (!is_file_exist(trt_model_fn))
|
if (!is_file_exist(trt_model_fn))
|
||||||
{
|
{
|
||||||
throw std::runtime_error("SpireCV (104) Error loading the VeriDetector TensorRT model (File Not Exist)");
|
throw std::runtime_error("SpireCV (104) Error loading the VeriDetector TensorRT model (File Not Exist)");
|
||||||
|
|
|
@ -379,7 +379,7 @@ void _load_all_json(std::string json_fn, JsonValue& value, JsonAllocator& alloca
|
||||||
}
|
}
|
||||||
fin.close();
|
fin.close();
|
||||||
// std::cout << json_str << std::endl;
|
// std::cout << json_str << std::endl;
|
||||||
char source[1024 * 1024]; // 1M
|
char source[1024 * 256]; // 256K
|
||||||
char *endptr;
|
char *endptr;
|
||||||
|
|
||||||
strcpy(source, json_str.c_str());
|
strcpy(source, json_str.c_str());
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <opencv2/opencv.hpp>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -25,6 +29,15 @@ bool _is_file_exist(std::string& fn)
|
||||||
return f.good();
|
return f.good();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _comp_str_greater(const std::string& a, const std::string& b)
|
||||||
|
{
|
||||||
|
return a > b;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool _comp_str_lesser(const std::string& a, const std::string& b)
|
||||||
|
{
|
||||||
|
return a < b;
|
||||||
|
}
|
||||||
|
|
||||||
void _get_sys_time(TimeInfo& t_info)
|
void _get_sys_time(TimeInfo& t_info)
|
||||||
{
|
{
|
||||||
|
@ -136,4 +149,56 @@ int _comp_str_idx(const std::string& in_str, const std::string* str_list, int le
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void _list_dir(std::string dir, std::vector<std::string>& files, std::string suffixs, std::string prefix, bool r) {
|
||||||
|
// assert(_endswith(dir, "/") || _endswith(dir, "\\"));
|
||||||
|
|
||||||
|
DIR *pdir;
|
||||||
|
struct dirent *ent;
|
||||||
|
string childpath;
|
||||||
|
string absolutepath;
|
||||||
|
pdir = opendir(dir.c_str());
|
||||||
|
assert(pdir != NULL);
|
||||||
|
|
||||||
|
vector<string> suffixd(0);
|
||||||
|
if (!suffixs.empty() && suffixs != "") {
|
||||||
|
suffixd = _split(suffixs, "|");
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((ent = readdir(pdir)) != NULL) {
|
||||||
|
if (ent->d_type & DT_DIR) {
|
||||||
|
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (r) { // If need to traverse subdirectories
|
||||||
|
childpath = dir + ent->d_name;
|
||||||
|
_list_dir(childpath, files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (suffixd.size() > 0) {
|
||||||
|
bool can_push = false, cancan_push = true;
|
||||||
|
for (int i = 0; i < (int)suffixd.size(); i++) {
|
||||||
|
if (_endswith(ent->d_name, suffixd[i]))
|
||||||
|
can_push = true;
|
||||||
|
}
|
||||||
|
if (prefix.size() > 0) {
|
||||||
|
if (!_startswith(ent->d_name, prefix))
|
||||||
|
cancan_push = false;
|
||||||
|
}
|
||||||
|
if (can_push && cancan_push) {
|
||||||
|
absolutepath = dir + ent->d_name;
|
||||||
|
files.push_back(ent->d_name); // filepath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
absolutepath = dir + ent->d_name;
|
||||||
|
files.push_back(ent->d_name); // filepath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort(files.begin(), files.end()); //sort names
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,13 @@ bool _startswith(const std::string& str, const std::string& start);
|
||||||
bool _endswith(const std::string& str, const std::string& end);
|
bool _endswith(const std::string& str, const std::string& end);
|
||||||
std::string _trim(const std::string& str);
|
std::string _trim(const std::string& str);
|
||||||
int _comp_str_idx(const std::string& in_str, const std::string* str_list, int len);
|
int _comp_str_idx(const std::string& in_str, const std::string* str_list, int len);
|
||||||
|
bool _comp_str_greater(const std::string& a, const std::string& b);
|
||||||
|
bool _comp_str_lesser(const std::string& a, const std::string& b);
|
||||||
|
|
||||||
/************* file-related functions ***************/
|
/************* file-related functions ***************/
|
||||||
std::string _get_home();
|
std::string _get_home();
|
||||||
bool _is_file_exist(std::string& fn);
|
bool _is_file_exist(std::string& fn);
|
||||||
|
void _list_dir(std::string dir, std::vector<std::string>& files, std::string suffixs="", std::string prefix="", bool r=false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue