MTF
DFM.h
1 #ifndef MTF_DFM_H
2 #define MTF_DFM_H
3 
4 #include <caffe/caffe.hpp>
5 #include <opencv2/core/core.hpp>
6 #include <vector>
7 
8 #include "SSDBase.h"
9 
10 _MTF_BEGIN_NAMESPACE
11 
12 using namespace std;
13 using namespace caffe; // NOLINT(build/namespaces)
14 using std::string;
15 
17  int nfmaps;
18  char* layer_name;
19  int vis;
20  int e_zncc;
21 
22  char *model_file_name;
23  char *mean_file_name;
24  char *params_file_name;
25 
27  DFMParams(const AMParams *am_params,
28  int _n_fmaps, char* _layer_name, int _vis, int _zncc,
29  char *_model_f_name, char *_mean_f_name, char *_params_f_name);
31  DFMParams(const DFMParams *params = nullptr);
32 };
33 
37 class DFM: public SSDBase{
38 public:
39 
40  typedef DFMParams ParamType;
41 
42  DFM(const ParamType *img_params = nullptr);
43  void initializePixVals(const Matrix2Xd& curr_pts) override;
44  void updatePixVals(const Matrix2Xd& curr_pts) override;
45 
46  std::vector<cv::Mat> extract_features(cv::Mat img, char* layer_name);
47 
48  std::vector<cv::Mat> init_fmaps, curr_fmaps;
49 
50 private:
51  ParamType params;
52 
53  PixValT init_pix_vals_temp, curr_pix_vals_temp;
54  PixValT temp_fmaps;
55 
57  double init_pix_mean, init_pix_var, init_pix_std;
59  double curr_pix_mean, curr_pix_var, curr_pix_std;
60 
61  int n_pix_temp;
62  boost::shared_ptr<Net<float> > net_;
63  cv::Size input_geometry_;
64  int num_channels_;
65  cv::Mat mean_;
66 
67  void set_mean(const string& mean_file);
68  void wrap_input_layer(std::vector<cv::Mat>* input_channels);
69  void preprocess(const cv::Mat& img, std::vector<cv::Mat>* input_channels);
70  void wrap_any_layer(std::vector<cv::Mat>* input_channels, boost::shared_ptr< Blob<float> > layer);
71  cv::Mat convert_float_img(cv::Mat &img);
72 };
73 
74 _MTF_END_NAMESPACE
75 
76 #endif
Definition: SSDBase.h:45
Definition: AMParams.h:12
Definition: DFM.h:16
Deep Feature Maps.
Definition: DFM.h:37