MTF
NN.h
1 #ifndef MTF_NN_H
2 #define MTF_NN_H
3 
4 #include "SearchMethod.h"
5 #include "FGNN.h"
6 #include "NNParams.h"
7 #include "FLANNParams.h"
8 
9 #include <flann/flann.hpp>
10 #include <memory>
11 
12 _MTF_BEGIN_NAMESPACE
13 
14 template<class AM, class SSM>
15 class NN : public SearchMethod < AM, SSM > {
16  init_profiling();
17 public:
18  typedef typename AM::DistType DistType;
19  typedef flann::Matrix<double> flannMatT;
20  typedef flann::Matrix<int> flannResultT;
21  typedef unique_ptr<flannMatT> flannMatT_;
22 
23  //typedef flann::Index<flann::L2<double> > flannIdxT;
24  typedef flann::Index<DistType> FLANN;
25  typedef unique_ptr<FLANN> FLANN_;
26  typedef gnn::FGNN<DistType> FGNN;
27  typedef unique_ptr<FGNN> FGNN_;
28 
29 
30  typedef NNParams ParamType;
31  typedef FLANNParams::IdxType IdxType;
32  typedef FLANNParams::SearchType SearchType;
33 
34  using SearchMethod<AM, SSM> ::am;
35  using SearchMethod<AM, SSM> ::ssm;
36  using typename SearchMethod<AM, SSM> ::AMParams;
37  using typename SearchMethod<AM, SSM> ::SSMParams;
38  using SearchMethod<AM, SSM> ::cv_corners_mat;
39  using SearchMethod<AM, SSM> ::name;
40  using SearchMethod<AM, SSM> ::initialize;
41  using SearchMethod<AM, SSM> ::update;
42 
43  NN(const ParamType *nn_params = nullptr,
44  const FLANNParams *flann_params = nullptr,
45  const AMParams *am_params = nullptr,
46  const SSMParams *ssm_params = nullptr);
47  ~NN();
48 
49  void initialize(const cv::Mat &corners) override;
50  void update() override;
51 
52 private:
53 
54  ParamType params;
55  FLANNParams flann_params;
56  FLANN_ flann_index;
57  FGNN_ gnn_index;
58 
59  flannMatT_ flann_dataset;
60 
61  int frame_id;
62  unsigned int am_dist_size;
63  unsigned int ssm_state_size;
64 
66  unsigned int n_distr;
68  VectorXi distr_n_samples;
69 
70  bool using_pix_sigma;
71  vector<VectorXd> state_sigma, state_mean;
72 
73  Matrix24d prev_corners;
74  VectorXd inv_state_update;
75 
76  vector<VectorXd> ssm_perturbations;
77 
78  MatrixXdr eig_dataset;
79  VectorXd eig_query;
80  VectorXi eig_result;
81  VectorXd eig_dists;
82 
83  MatrixXdr eig_dataset_added;
84  vector<VectorXd> ssm_perturbations_added;
85  VectorXi distr_n_samples_added;
86 
87 
88  int best_idx;
89  double best_dist;
90 
91  string saved_db_path, saved_idx_path;
92  cv::Mat curr_img_uchar;
93  cv::Point2d curr_corners[4];
94 
95  bool dataset_loaded;
96 
97  char *log_fname;
98  char *time_fname;
99 
100  void generateDataset(vector<VectorXd> &perturbations,
101  MatrixXdr &dataset, const VectorXi &_distr_n_samples);
102  void loadDataset();
103  void saveDataset();
104 };
105 
106 _MTF_END_NAMESPACE
107 
108 #endif
109 
Definition: StateSpaceModel.h:35
Definition: FGNN.h:14
Definition: NN.h:15
Definition: AMParams.h:12
Definition: SearchMethod.h:10
index specific params
Definition: FLANNParams.h:10
Definition: NNParams.h:9