Lens AI Profiler Cpp
imagesampler.h
1 
6 #ifndef CONFIDENCE_METRICS_H
7 #define CONFIDENCE_METRICS_H
8 
9 #include <opencv2/core.hpp>
10 #include <opencv2/highgui.hpp>
11 #include <opencv2/imgproc.hpp>
12 #include <opencv2/opencv.hpp>
13 #include <vector>
14 #include <algorithm>
15 #include <cmath>
16 #include <fstream>
17 #include <iostream>
18 #include <sstream>
19 #include <stdexcept>
20 #include <kll_sketch.hpp>
21 
22 #include "iniparser.h"
23 #include "saver.h"
24 #include "generic.h"
25 
26 // Typedef for distribution box data structure (assuming datasketches::kll_sketch<unit>)
28 
33 class ImageSampler {
34 public:
39  ImageSampler(const std::string& conf_path, int save_interval);
40  ~ImageSampler();
41 
48  int sample(const std::vector<std::pair<float, int>> &results, cv::Mat &img, bool save_sample);
49 
56  float margin_confidence(std::vector<float>& prob_dist, bool sorted);
57 
64  float least_confidence(std::vector<float>& prob_dist, bool sorted);
65 
72  float ratio_confidence(std::vector<float>& prob_dist, bool sorted);
73 
79  float entropy_confidence(std::vector<float>& prob_dist);
80  std::string statSavepath;
81  std::string dataSavepath;
82 
83 private:
84  // Member variables for storing confidence metric statistics
85  distributionBox marginConfidenceBox;
86  distributionBox leastConfidenceBox;
87  distributionBox ratioConfidenceBox;
88  distributionBox entropyConfidenceBox;
89  Saver *saver;
90  //ImageUploader *uploader;
91  std::map<std::string, std::vector<std::string>> samplingConfig;
92  void registerStatistics(const std::string& name);
93 
100  float computeConfidence(const std::string& name, std::vector<float>& confidence);
101 
109  bool isThresholdExceeded(const std::string& name, float stat_score, const std::vector<std::string>& config);
110 
111  void updateSamplingStatistics(const std::string& name, float confidence_score);
112 };
113 
114 #endif // CONFIDENCE_METRICS_H
115 
Class for selecting uncertain image samples for further analysis based on various confidence metrics.
Definition: imagesampler.h:33
float entropy_confidence(std::vector< float > &prob_dist)
Calculates entropy-based confidence.
Definition: imagesampler.cpp:147
ImageSampler(const std::string &conf_path, int save_interval)
Constructor to initialize ImageSampler object with configuration file path.
Definition: imagesampler.cpp:22
int sample(const std::vector< std::pair< float, int >> &results, cv::Mat &img, bool save_sample)
Selects uncertain image samples based on configured criteria.
Definition: imagesampler.cpp:53
float margin_confidence(std::vector< float > &prob_dist, bool sorted)
Calculates margin confidence (difference between top two probabilities)
Definition: imagesampler.cpp:94
float least_confidence(std::vector< float > &prob_dist, bool sorted)
Calculates least confidence (normalized maximum probability)
Definition: imagesampler.cpp:111
float ratio_confidence(std::vector< float > &prob_dist, bool sorted)
Calculates ratio confidence (ratio of top two probabilities)
Definition: imagesampler.cpp:131
Definition: saver.h:38