Conscience Core
CscDetectorEngineYoloV4.h
Go to the documentation of this file.
1 #ifndef CscDetectorEngineYoloV4_h
2 #define CscDetectorEngineYoloV4_h
3 
7 
8 using std::ostream;
9 
11 
13 
15 public:
20  CscDetectorEngineYoloV4(ptr<CscDNNPool> dnnPool, map<DetectableObjectClassId, const DetectableObjectClass> detectedObjectClasses, bool drawPredictionOnImage, const string &name);
21 
23  map<DetectableObjectClassId, const DetectableObjectClass> detectedObjectClasses, const fs::path modelConfigurationPath, const fs::path modelWeightsPath, bool drawPredictionOnImage, const string &name);
24 
26  const DetectorSourceImage &image, ptr<DetectionParameters> parameters) override;
27 
28  CscDetectorEngineYoloV4 *setDetectedRectanglesColor(const cv::Scalar &detectedRectanglesColor) {
29  this->detectedRectanglesColor = detectedRectanglesColor;
30  return this;
31  }
32 
38  this->tilingEnabled = tilingEnabled;
39  return this;
40  }
41 
42  CscDetectorEngineYoloV4 *setMinConfidenceThreshold(float minConfidenceThreshold) {
43  this->minConfidenceThreshold = minConfidenceThreshold;
44  return this;
45  }
46 
51  this->cropImage = cropImage;
52  return this;
53  }
54 
55  virtual bool equals(CscDetectorEngine *) const override;
56 
57 private:
58  float minConfidenceThreshold = 0.7;
59  bool cropImage = false;
60 
61  // this scale factor allows conversion of colors bytes from 0-255 to float 0-1
62  const double SCALE_FACTOR = 1 / 255.0;
63 
64  int netInputWidth = 0;
65  int netInputHeight = 0;
66 
67  ptr<SafeNeuralNetwork> neuralNetwork;
68 
69  bool tilingEnabled = false;
70  const bool drawPredictionOnImage;
71  const map<DetectableObjectClassId, const DetectableObjectClass> detectedObjectClasses;
72 
73  cv::Scalar detectedRectanglesColor = cv::Scalar(255, 178, 50);
74 
75  std::unique_ptr<CscLogger> logger;
76 
77  void readNetInputSizeFromCfg(fs::path cfgFilePath);
78 
79  const fs::path modelConfigurationPath;
80  const fs::path modelWeightsPath;
81 
82  class Tile {
83  private:
84  Mat *image;
85 
89  cv::Point offset;
90 
94  cv::Point position;
95 
96  public:
97  Tile(const Mat &image, const cv::Point &offset, const cv::Point &position);
98  ~Tile();
99  Mat &getImage() {
100  return *image;
101  }
102  cv::Point &getOffset() {
103  return offset;
104  }
105  cv::Point &getPosition() {
106  return position;
107  }
108  };
109 
113  class TileResultsCollector {
114  public:
115  vector<DetectableObjectClassId> classIds;
116  vector<float> confidences;
117  vector<cv::Rect> rectangles;
118  };
119 
120  void processTile(ptr<Tile> tile, TileResultsCollector &resultsCollector);
121 
122  vector<ptr<Tile>> splitInTiles(const Mat &image);
123 
124  ptr<DetectionResult> reconcileResults(Mat &image, TileResultsCollector &tileResults);
125 };
126 }
127 
128 #endif
conscience_core::detector_engine::CscDetectorEngineYoloV4::detectOnImage
ptr< DetectionResult > detectOnImage(const DetectorSourceImage &image, ptr< DetectionParameters > parameters) override
Definition: CscDetectorEngineYoloV4.cpp:51
conscience_core::detector_engine::CscDetectorEngineYoloV4::setTilingEnabled
CscDetectorEngineYoloV4 * setTilingEnabled(bool tilingEnabled)
Definition: CscDetectorEngineYoloV4.h:37
conscience_core::detector_engine::CscDetectorEngine
Definition: CscDetectorEngine.h:107
conscience_core::detector_engine::CscDetectorEngineYoloV4::setCropImage
CscDetectorEngineYoloV4 * setCropImage(bool cropImage)
Definition: CscDetectorEngineYoloV4.h:50
conscience_core::detector_engine::SafeNeuralNetwork
CscDNNPool::SafeNeuralNetwork SafeNeuralNetwork
Definition: CscDetectorEngineHandPose.h:25
conscience_core::detector_engine
Definition: ConscienceVisionDetectorRepository.cpp:30
CscDetectorEngine.h
conscience_core::detector_engine::CscDetectorEngineYoloV4
Definition: CscDetectorEngineYoloV4.h:14
conscience_core::detector_engine::CscDetectorEngineYoloV4::equals
virtual bool equals(CscDetectorEngine *) const override
Definition: CscDetectorEngineYoloV4.cpp:350
conscience_core::detector_engine::CscDetectorEngineYoloV4::setMinConfidenceThreshold
CscDetectorEngineYoloV4 * setMinConfidenceThreshold(float minConfidenceThreshold)
Definition: CscDetectorEngineYoloV4.h:42
CscDetectorEngineYoloV8.h
CscDNNPool.h
conscience_core::detector_engine::DetectorSourceImage
Definition: CscDetectorEngine.h:66
conscience_core::detector_engine::CscDetectorEngineYoloV4::setDetectedRectanglesColor
CscDetectorEngineYoloV4 * setDetectedRectanglesColor(const cv::Scalar &detectedRectanglesColor)
Definition: CscDetectorEngineYoloV4.h:28
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::detector_engine::CscDetectorEngineYoloV4::CscDetectorEngineYoloV4
CscDetectorEngineYoloV4(ptr< CscDNNPool > dnnPool, map< DetectableObjectClassId, const DetectableObjectClass > detectedObjectClasses, bool drawPredictionOnImage, const string &name)
Definition: CscDetectorEngineYoloV4.cpp:25