SOMHunter Core
settings.h
Go to the documentation of this file.
1 /* This file is part of SOMHunter.
2  *
3  * Copyright (C) 2021 Frantisek Mejzlik <frankmejzlik@protonmail.com>
4  * Mirek Kratochvil <exa.exa@gmail.com>
5  * Patrik Vesely <prtrikvesely@gmail.com>
6  *
7  * SOMHunter is free software: you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License as published by the Free
9  * Software Foundation, either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * SOMHunter is distributed in the hope that it will be useful, but WITHOUT ANY
13  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15  * details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * SOMHunter. If not, see <https://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef SETTINGS_H_
22 #define SETTINGS_H_
23 
24 #include <fstream>
25 #include <optional>
26 #include <stdexcept>
27 #include <string>
28 #include <variant>
29 
30 namespace sh {
38 struct TestsSettings {
39  std::string test_data_root;
40 };
41 
46 };
47 
49  // ...
50 };
51 
52 struct ApiConfig {
53  bool local_only;
54  size_t port;
55  std::string config_filepath;
56  std::string docs_dir;
57 };
58 
64  struct ServerConfigVbs {
65  std::string submit_URL;
66  std::string submit_rerank_URL;
68  };
69 
75  std::string cookie_file;
76 
77  std::string username;
78  std::string password;
79 
80  std::string submit_URL;
81  std::string submit_rerank_URL;
83 
84  std::string login_URL;
85  std::string logout_URL;
86  std::string session_URL;
87  std::string server_time_URL;
88  };
89 
90  using ServerConfig = std::variant<ServerConfigVbs, ServerConfigDres>;
91 
92  // ---
93 
95 
99 
100  size_t team_ID;
101  size_t member_ID;
102 
104  std::string log_dir_user_actions;
106  std::string log_dir_results;
107  std::string log_dir_queries;
108  std::string log_file_suffix;
110 
114  std::string server_type;
115 };
116 
118  struct ClipQueryToVec {
119  std::string address;
120  };
121 
122  struct MediaServer {
123  std::string address;
124  };
125 
128 };
129 
131  std::string models_dir;
132  std::string model_W2VV_img_bias;
134  std::string model_ResNet_file;
135  std::string model_ResNet_SHA256;
136  std::string model_ResNext_file;
137  std::string model_ResNext_SHA256;
138 };
139 
142  size_t vid_ID_off;
143  size_t vid_ID_len;
144  size_t shot_ID_off;
145  size_t shot_ID_len;
148  };
151  size_t _dim;
152  std::string features_file;
153 
155  std::string kw_bias_vec_file;
156  std::string kw_scores_mat_file;
157  std::string kw_PCA_mean_vec_file;
158  std::string kw_PCA_mat_file;
160 
161  std::string kws_file;
162 
165  };
166 
169  size_t _dim;
170  std::string features_file;
171  };
172 
173  // ---
174 
175  std::string data_dir;
176  std::string frames_dir;
177  std::string thumbs_dir;
179  std::optional<std::string> LSC_metadata_file;
180  std::string frames_list_file;
182 
185 };
186 
190 struct Settings {
191  static Settings parse_JSON_config(const std::string& filepath);
192  static Settings parse_JSON_config_string(const std::string& cfg_file_contents);
193 
194  // ---
195 
204 };
205 
206 }; // namespace sh
207 
208 #endif // SETTINGS_H_
Definition: common-types.h:33
Definition: settings.h:52
std::string docs_dir
Definition: settings.h:56
bool local_only
Definition: settings.h:53
size_t port
Definition: settings.h:54
std::string config_filepath
Definition: settings.h:55
size_t features_file_data_off
Definition: settings.h:150
std::string kw_PCA_mat_file
Definition: settings.h:158
size_t pre_PCA_features_dim
Definition: settings.h:154
std::string features_file
Definition: settings.h:152
std::string kw_bias_vec_file
Definition: settings.h:155
std::string kws_file
Definition: settings.h:161
size_t kw_PCA_mat_dim
Definition: settings.h:159
std::string kw_scores_mat_file
Definition: settings.h:156
size_t _dim
Definition: settings.h:151
std::string collage_region_file_prefix
Definition: settings.h:163
std::string kw_PCA_mean_vec_file
Definition: settings.h:157
size_t collage_regions
Definition: settings.h:164
size_t features_file_data_off
Definition: settings.h:168
size_t _dim
Definition: settings.h:169
std::string features_file
Definition: settings.h:170
size_t frame_num_len
Definition: settings.h:147
size_t vid_ID_len
Definition: settings.h:143
size_t vid_ID_off
Definition: settings.h:142
size_t shot_ID_off
Definition: settings.h:144
size_t shot_ID_len
Definition: settings.h:145
size_t frame_num_off
Definition: settings.h:146
Definition: settings.h:140
std::string frames_dir
Definition: settings.h:176
std::string data_dir
Definition: settings.h:175
SecondaryFeaturesSettings secondary_features
Definition: settings.h:184
std::optional< std::string > LSC_metadata_file
File with time and position for LSC datasets.
Definition: settings.h:179
PrimaryFeaturesSettings primary_features
Definition: settings.h:183
std::string thumbs_dir
Definition: settings.h:177
std::string frames_list_file
Definition: settings.h:180
VideoFilenameOffsets filename_offsets
Definition: settings.h:181
Config for submitting to the DRES server.
Definition: settings.h:74
std::string server_time_URL
Definition: settings.h:87
std::string password
Definition: settings.h:78
std::string login_URL
Definition: settings.h:84
std::string username
Definition: settings.h:77
std::string submit_URL
Definition: settings.h:80
std::string submit_interaction_URL
Definition: settings.h:82
std::string cookie_file
Definition: settings.h:75
std::string session_URL
Definition: settings.h:86
std::string logout_URL
Definition: settings.h:85
std::string submit_rerank_URL
Definition: settings.h:81
Config for submitting to the older server.
Definition: settings.h:64
std::string submit_URL
Definition: settings.h:65
std::string submit_interaction_URL
Definition: settings.h:67
std::string submit_rerank_URL
Definition: settings.h:66
Definition: settings.h:59
std::string log_dir_user_actions
Definition: settings.h:104
std::string log_dir_eval_server_requests
Definition: settings.h:103
std::string log_dir_results
Definition: settings.h:106
std::variant< ServerConfigVbs, ServerConfigDres > ServerConfig
Definition: settings.h:90
std::string log_dir_user_actions_summary
Definition: settings.h:105
size_t send_logs_to_server_period
Definition: settings.h:111
bool submit_LSC_IDs
Definition: settings.h:97
std::string log_file_suffix
Definition: settings.h:108
size_t team_ID
Definition: settings.h:100
size_t member_ID
Definition: settings.h:101
bool extra_verbose_log
Definition: settings.h:109
bool do_network_requests
Definition: settings.h:96
ServerConfig server_cfg
Definition: settings.h:94
std::string server_type
Definition: settings.h:114
bool apply_log_action_timeout
Definition: settings.h:112
size_t log_action_timeout
Definition: settings.h:113
bool allow_insecure
Definition: settings.h:98
std::string log_dir_queries
Definition: settings.h:107
Definition: settings.h:48
Definition: settings.h:130
std::string model_W2VV_img_weigths
Definition: settings.h:133
std::string model_ResNext_SHA256
Definition: settings.h:137
std::string model_ResNext_file
Definition: settings.h:136
std::string model_ResNet_file
Definition: settings.h:134
std::string models_dir
Definition: settings.h:131
std::string model_ResNet_SHA256
Definition: settings.h:135
std::string model_W2VV_img_bias
Definition: settings.h:132
Definition: settings.h:42
size_t display_page_size
Definition: settings.h:43
size_t topn_frames_per_shot
Definition: settings.h:45
size_t topn_frames_per_video
Definition: settings.h:44
std::string address
Definition: settings.h:119
Definition: settings.h:122
std::string address
Definition: settings.h:123
Definition: settings.h:117
ClipQueryToVec CLIP_query_to_vec
Definition: settings.h:126
MediaServer media_server
Definition: settings.h:127
Parsed current config of the core.
Definition: settings.h:190
static Settings parse_JSON_config_string(const std::string &cfg_file_contents)
Definition: settings.cpp:275
PresentationViewsSettings presentation_views
Definition: settings.h:197
DatasetsSettings datasets
Definition: settings.h:203
TestsSettings tests
Definition: settings.h:196
LoggerSettings logger
Definition: settings.h:198
EvalServerSettings eval_server
Definition: settings.h:200
ApiConfig API
Definition: settings.h:199
static Settings parse_JSON_config(const std::string &filepath)
Parsees the JSON config file that holds initial config.
Definition: settings.cpp:270
RemoteServicesSettings remote_services
Definition: settings.h:201
ModelsSettings models
Definition: settings.h:202
Config needed by the Submitter instance.
Definition: settings.h:38
std::string test_data_root
Definition: settings.h:39