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  );
25 
27  const DetectorSourceImage &image, ptr<DetectionParameters> parameters
28  ) override;
29 
30  CscDetectorEngineYoloV4 * setDetectedRectanglesColor(const cv::Scalar & detectedRectanglesColor) {
31  this->detectedRectanglesColor = detectedRectanglesColor;
32  return this;
33  }
34 
39  CscDetectorEngineYoloV4 * setTilingEnabled(bool tilingEnabled) {
40  this->tilingEnabled = tilingEnabled;
41  return this;
42  }
43 
44  CscDetectorEngineYoloV4 * setMinConfidenceThreshold(float minConfidenceThreshold) {
45  this->minConfidenceThreshold = minConfidenceThreshold;
46  return this;
47  }
48 
53  this->cropImage = cropImage;
54  return this;
55  }
56 
57  virtual bool equals(CscDetectorEngine *) const override;
58 
59  private:
60  float minConfidenceThreshold = 0.7;
61  bool cropImage = false;
62 
63  // this scale factor allows conversion of colors bytes from 0-255 to float 0-1
64  const double SCALE_FACTOR = 1 / 255.0;
65 
66  int netInputWidth = 0;
67  int netInputHeight = 0;
68 
69  ptr<SafeNeuralNetwork> neuralNetwork;
70 
71  bool tilingEnabled = false;
72  const bool drawPredictionOnImage;
73  const map<DetectableObjectClassId, const DetectableObjectClass> detectedObjectClasses;
74 
75  cv::Scalar detectedRectanglesColor = cv::Scalar(255, 178, 50);
76 
77  std::unique_ptr<CscLogger> logger;
78 
79  void readNetInputSizeFromCfg(fs::path cfgFilePath);
80 
81  const fs::path modelConfigurationPath;
82  const fs::path modelWeightsPath;
83 
84  class Tile {
85  private:
86  Mat image;
87 
91  cv::Point offset;
92 
96  cv::Point position;
97 
98  public:
99  Tile(const Mat & image, const cv::Point & offset, const cv::Point & position): image(image), offset(offset), position(position) {
100  }
101  Mat & getImage() {
102  return image;
103  }
104  cv::Point & getOffset() {
105  return offset;
106  }
107  cv::Point & getPosition() {
108  return position;
109  }
110  };
111 
115  class TileResultsCollector {
116  public:
117  vector<DetectableObjectClassId> classIds;
118  vector<float> confidences;
119  vector<cv::Rect> rectangles;
120  };
121 
122  void processTile(ptr<Tile> tile, TileResultsCollector & resultsCollector);
123 
124  vector<ptr<Tile>> splitInTiles(const Mat &image);
125 
126  ptr<DetectionResult> reconcileResults(Mat &image, TileResultsCollector & tileResults);
127  };
128 }
129 
130 #endif /* ConscienceDetectorEngine_hpp */
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:39
conscience_core::detector_engine::CscDetectorEngine
Definition: CscDetectorEngine.h:107
conscience_core::detector_engine::CscDetectorEngineYoloV4::setCropImage
CscDetectorEngineYoloV4 * setCropImage(bool cropImage)
Definition: CscDetectorEngineYoloV4.h:52
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:346
conscience_core::detector_engine::CscDetectorEngineYoloV4::setMinConfidenceThreshold
CscDetectorEngineYoloV4 * setMinConfidenceThreshold(float minConfidenceThreshold)
Definition: CscDetectorEngineYoloV4.h:44
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:30
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