Conscience Core
CscDNNPool.h
Go to the documentation of this file.
1 #ifndef CscDNNPool_H
2 #define CscDNNPool_H
3 
4 #include <CscCommon.h>
5 #include <Util/os.h>
6 
7 namespace cv {
8 class Mat;
9 }
10 #if CSC_OS_WINDOWS == 1
11 namespace cv::dnn::dnn4_v20240521 {
12 class Net;
13 }
14 using cv::dnn::dnn4_v20240521::Net;
15 #else
17  class Net;
18 }
19 using cv::dnn::dnn4_v20221220::Net;
20 #endif
21 
22 using cv::Mat;
23 
25  class CscDNNPool {
26  public:
31  public:
32  void doWithNet(function<void(Net &net)> action);
33 
34  Mat *process(Mat &inputBlob);
35 
39  vector<Mat *> processAllLayers(Mat &inputBlob);
40 
41  SafeNeuralNetwork(const string &modelPath, optional<string> configPath);
42 
43  void release();
44 
45  private:
46  const string modelPath;
47  Net *net = nullptr;
48  mutex dnnProcessMutex;
49  unsigned long long lastProcessTimeMillis = 0;
50 
51  std::unique_ptr<CscLogger> logger;
52  vector<string> getOutputsNames();
53  };
54  CscDNNPool();
55  ptr<SafeNeuralNetwork> get(const string &modelPath, optional<string> configPath = {});
56  void release(const string &modelPath, optional<string> configPath = {});
57 
58  // TODO : how to release Net
59  private:
60  map<string, ptr<SafeNeuralNetwork>> networks;
61  mutex getMutex;
62 
63  std::unique_ptr<CscLogger> logger;
64 
65  string getNetCacheId(const string &modelPath, optional<string> configPath) const;
66  };
67 }
68 
69 #endif
os.h
conscience_core::detector_engine
Definition: ConscienceVisionDetectorRepository.cpp:30
conscience_core::detector_engine::CscDNNPool::get
ptr< SafeNeuralNetwork > get(const string &modelPath, optional< string > configPath={})
Definition: CscDNNPool.cpp:106
conscience_core::detector_engine::CscDNNPool::release
void release(const string &modelPath, optional< string > configPath={})
Definition: CscDNNPool.cpp:121
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork::release
void release()
Definition: CscDNNPool.cpp:51
conscience_core::detector_engine::CscDNNPool::CscDNNPool
CscDNNPool()
Definition: CscDNNPool.cpp:18
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork
Definition: CscDNNPool.h:30
CscCommon.h
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork::processAllLayers
vector< Mat * > processAllLayers(Mat &inputBlob)
Definition: CscDNNPool.cpp:56
cv::dnn::dnn4_v20221220
Definition: CscDNNPool.h:16
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork::process
Mat * process(Mat &inputBlob)
Definition: CscDNNPool.cpp:34
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork::SafeNeuralNetwork
SafeNeuralNetwork(const string &modelPath, optional< string > configPath)
Definition: CscDNNPool.cpp:22
cv
Definition: CscEntityDetectionState.h:24
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
conscience_core::detector_engine::CscDNNPool
Definition: CscDNNPool.h:25
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::detector_engine::CscDNNPool::SafeNeuralNetwork::doWithNet
void doWithNet(function< void(Net &net)> action)
Definition: CscDNNPool.cpp:46