1 #ifndef MTF_PARAMETERS_H 2 #define MTF_PARAMETERS_H 10 #include "boost/filesystem/operations.hpp" 11 #include "opencv2/core/core.hpp" 13 #include "mtf/Macros/common.h" 16 namespace fs = boost::filesystem;
18 #define VID_FNAME "nl_bookI_s3" 21 #define IMG_FOLDER "nl_bookI_s3" 24 #define ROOT_FOLDER "../../Datasets/TMT" 26 #define FW_DEV_NAME "firewire_cam" 27 #define FW_DEV_PATH "/dev/fw1" 28 #define FW_DEV_FMT "i1V1f7o3r150" 30 #define USB_DEV_NAME "usb_cam" 31 #define USB_DEV_PATH "/dev/video0" 32 #define USB_DEV_FMT "I1B4r0N0" 36 #define CASCADE_MAX_TRACKERS 10 37 #define MAX_ABS_PATH 500 39 #define parse_param(param_name, param_func)\ 40 do{if(!strcmp(arg_name, #param_name)){\ 41 param_name = param_func(arg_val);\ 44 #define parse_param_vec(param_name, param_func)\ 45 do{if(!strcmp(arg_name, #param_name)){\ 46 param_name.push_back(param_func(arg_val));\ 50 #define parse_cfg(fname) \ 51 fargc = readParams(fargv, (config_dir + "/" + fname).c_str());\ 53 if(!parseArgumentPairs(fargv.data(), fargc)){\ 54 printf("Error in parsing %s\n", fname);\ 60 #define atof32(x) static_cast<float>(atof(x)) 65 std::string config_dir =
"Config";
70 std::string db_root_path =
"../../../Datasets";
75 bool invert_seq =
false;
76 unsigned int n_trackers = 1;
77 bool track_single_obj =
false;
79 char img_source =
'j';
80 double img_resize_factor = 1.0;
81 int input_buffer_size = 10;
85 int mtf_visualize = 1;
86 int pause_after_frame = 0;
87 bool print_corners =
false;
88 bool print_fps =
false;
89 int show_corner_ids = 0;
90 int show_ground_truth = 0;
91 int reinit_gt_from_bin = 1;
92 int read_obj_from_file = 0;
93 int read_obj_from_gt = 1;
94 bool sel_quad_obj =
false;
95 int line_thickness = 2;
96 int record_frames = 0;
97 bool gt_write_ssm_params =
false;
98 int write_tracking_data = 0;
99 bool overwrite_gt = 0;
100 int show_proc_img = 0;
102 char rec_source =
'u';
103 std::string rec_seq_suffix;
105 std::vector<std::string> tracker_labels;
107 int reinit_at_each_frame = 0;
108 int reset_at_each_frame = 0;
109 bool reset_to_init =
false;
110 int reinit_on_failure =
false;
111 double reinit_err_thresh = 5.0;
112 int reinit_frame_skip = 5;
113 bool reinit_with_new_obj =
false;
115 bool use_reinit_gt =
false;
116 bool use_opt_gt =
false;
117 std::string opt_gt_ssm =
"2";
119 int reset_template = 0;
122 std::string read_obj_fname =
"sel_objs/selected_objects.txt";
123 std::string write_obj_fname =
"sel_objs/selected_objects.txt";
124 std::string tracking_data_fname;
125 std::string record_frames_fname, record_frames_dir;
128 int xv_visualize = 0;
129 int xv_steps_per_frame = 1;
131 int xv_no_of_levels = 2;
132 double xv_scale = 0.5;
134 int xv_patch_size = 32;
135 int xv_tracker_type =
't';
136 int xvg_grid_size_x = 4;
137 int xvg_grid_size_y = -1;
138 int xvg_reset_pos = 0;
139 int xvg_reset_wts = 0;
140 double xvg_sel_reset_thresh = 1.0;
141 int xvg_pause_after_line = 0;
142 int xvg_show_tracked_pts = 0;
143 int xvg_use_constant_slope = 0;
145 int xvg_update_wts = 0;
146 double xvg_inter_alpha_thresh = 0.10;
147 double xvg_intra_alpha_thresh = 0.05;
148 int xvg_adjust_grid = 0;
149 int xvg_adjust_lines = 1;
152 unsigned int mtf_res = 50;
153 unsigned int resx = 50;
154 unsigned int resy = 50;
155 int init_frame_id = 0;
156 int start_frame_id = 0;
157 int end_frame_id = 0;
160 double epsilon = 0.01;
161 char* mtf_sm =
"esm";
162 char* mtf_am =
"ssd";
165 bool enable_nt =
false;
166 bool invalid_state_check =
true;
167 double invalid_state_err_thresh = 0;
168 bool uchar_input =
false;
170 bool ic_update_ssm =
true;
171 bool ic_chained_warp =
true;
172 int ic_hess_type = 0;
174 bool fc_chained_warp =
false;
175 int fc_hess_type = 1;
176 bool fc_write_ssm_updates =
false;
177 bool fc_show_grid =
false;
178 bool fc_show_patch =
false;
179 double fc_patch_resize_factor = 1.0;
180 bool fc_debug_mode =
false;
182 int fa_hess_type = 1;
183 bool fa_show_grid =
false;
184 bool fa_show_patch =
false;
185 double fa_patch_resize_factor = 1.0;
186 bool fa_write_frames =
false;
188 int ia_hess_type = 1;
190 int esm_jac_type = 1;
191 int esm_hess_type = 2;
192 bool esm_chained_warp =
false;
194 bool sec_ord_hess =
false;
195 bool leven_marq =
false;
196 double lm_delta_init = 0.01;
197 double lm_delta_update = 10;
199 bool enable_learning =
false;
200 double learning_rate = 0.5;
203 bool ssd_show_template =
false;
205 double nssd_norm_pix_min = 0.0;
206 double nssd_norm_pix_max = 1.0;
208 double zncc_likelihood_alpha = 50;
210 double res_from_size = 0;
211 int show_tracking_error = 0;
212 int write_tracking_error = 0;
213 int write_tracking_sr = 0;
214 vectord sr_err_thresh;
217 std::string fps_col =
"green";
218 std::string gt_col =
"green";
219 std::string err_col =
"green";
221 int tracking_err_type = 0;
222 bool show_jaccard_error =
false;
223 double grad_eps = 1e-8;
224 double hess_eps = 1.0;
225 double likelihood_alpha = 1.0;
226 double likelihood_beta = 0.0;
227 bool dist_from_likelihood =
false;
229 std::string pre_proc_type =
"gauss";
231 bool pre_proc_hist_eq =
false;
233 int gauss_kernel_size = 5;
234 double gauss_sigma_x = 3;
235 double gauss_sigma_y = 3;
237 int med_kernel_size = 5;
239 int box_kernel_size = 5;
241 int bil_diameter = 5;
242 double bil_sigma_col = 15;
243 double bil_sigma_space = 15;
245 int sobel_kernel_size = 5;
246 bool sobel_normalize =
false;
248 double aniso_lambda = 0.14285714285;
249 double aniso_kappa = 30;
250 unsigned int aniso_n_iters = 15;
253 int aff_normalized_init = 0;
254 int aff_pt_based_sampling = 0;
257 int laff_normalized_init = 0;
258 double laff_grad_eps = 1e-8;
261 int hom_normalized_init = 0;
262 bool hom_corner_based_sampling =
true;
265 int lhom_normalized_init = 0;
266 double lhom_grad_eps = 1e-8;
269 int cbh_normalized_init = 0;
270 double cbh_grad_eps = 1e-8;
273 bool asrt_normalized_init =
false;
274 int asrt_pt_based_sampling = 0;
277 bool sim_normalized_init =
false;
278 bool sim_geom_sampling =
true;
279 int sim_pt_based_sampling = 0;
280 int sim_n_model_pts = 2;
283 int iso_pt_based_sampling = 0;
286 int sl3_normalized_init = 0;
287 bool sl3_iterative_sample_mean =
true;
288 int sl3_sample_mean_max_iters = 10;
289 double sl3_sample_mean_eps = 1e-4;
290 bool sl3_debug_mode = 0;
293 int spl_control_size = 10;
294 double spl_control_overlap = 1;
295 int spl_interp_type = 0;
296 bool spl_static_wts =
true;
297 bool spl_debug_mode = 0;
300 int scv_hist_type = 0;
301 bool scv_use_bspl = 0;
302 int scv_n_bins = 256;
303 double scv_preseed = 0;
305 bool scv_weighted_mapping = 1;
306 bool scv_mapped_gradient = 1;
307 bool scv_affine_mapping = 0;
308 bool scv_once_per_frame = 0;
309 bool scv_approx_dist_feat =
true;
310 double scv_likelihood_alpha = 0;
313 int lscv_sub_regions = 3;
314 int lscv_spacing = 10;
315 bool lscv_show_subregions =
false;
319 double lkld_pre_seed = 0.1;
321 int lkld_sub_regions = 0;
322 int lkld_spacing = 1;
325 bool ncc_fast_hess =
false;
326 double ncc_likelihood_alpha = 50;
329 double spss_k = 0.01;
330 double spss_likelihood_alpha = 50;
333 int ssim_pix_proc_type = 0;
334 double ssim_k1 = 0.01;
335 double ssim_k2 = 0.03;
336 double ssim_likelihood_alpha = 50;
339 std::string sum_am1, sum_am2;
341 char *pix_mapper =
nullptr;
345 double mi_pre_seed = 10;
347 double mi_likelihood_alpha = 50;
351 double ccre_pre_seed = 10;
352 bool ccre_pou =
false;
353 bool ccre_symmetrical_grad =
false;
354 int ccre_n_blocks = 0;
355 double ccre_likelihood_alpha = 50;
358 double ngf_eta = 5.0;
359 bool ngf_use_ssd =
false;
362 int nn_max_iters = 10;
363 int nn_n_samples = 1000;
364 vectori nn_ssm_sigma_ids;
365 vectori nn_ssm_mean_ids;
366 double nn_corner_sigma_d = 0.04;
367 double nn_corner_sigma_t = 0.06;
368 vectord nn_pix_sigma;
370 double nn_ssm_sigma_prec = 1.1;
371 int nn_index_type = 1;
372 int nn_search_type = 0;
373 bool nn_additive_update =
false;
374 int nn_show_samples = 0;
375 int nn_add_samples_gap = 0;
376 int nn_n_samples_to_add = 0;
377 int nn_remove_samples = 0;
378 bool nn_save_index =
false;
379 bool nn_load_index =
false;
380 int nn_saved_index_fid = 0;
382 int nn_gnn_degree = 250;
383 int nn_gnn_max_steps = 10;
384 int nn_gnn_cmpt_dist_thresh = 10000;
385 bool nn_gnn_random_start =
false;
386 bool nn_gnn_verbose =
false;
387 int nn_fgnn_index_type = 0;
389 int nn_srch_checks = 32;
390 float nn_srch_eps = 0.0;
391 bool nn_srch_sorted =
true;
392 int nn_srch_max_neighbors = -1;
393 int nn_srch_cores = 1;
394 bool nn_srch_matrices_in_gpu_ram =
false;
395 int nn_srch_use_heap = 2;
396 int nn_kdt_trees = 6;
397 int nn_km_branching = 32;
398 int nn_km_iterations = 11;
399 int nn_km_centers_init = 0;
400 float nn_km_cb_index = 0.2f;
401 int nn_kdts_leaf_max_size = 10;
402 int nn_kdtc_leaf_max_size = 64;
403 int nn_hc_branching = 32;
405 int nn_hc_leaf_max_size = 100;
406 int nn_hc_centers_init = 0;
407 float nn_auto_target_precision = 0.9f;
408 float nn_auto_build_weight = 0.01f;
409 float nn_auto_memory_weight = 0.0f;
410 float nn_auto_sample_fraction = 0.1f;
414 vectorvi nnk_ssm_sigma_ids;
417 int rg_max_iters = 10;
418 int rg_n_samples = 1000;
419 vectori rg_ssm_sigma_ids;
420 vectori rg_ssm_mean_ids;
421 vectord rg_pix_sigma;
422 bool rg_additive_update =
false;
423 int rg_show_samples = 0;
424 int rg_add_points = 0;
425 int rg_remove_points = 0;
426 bool rg_save_index =
false;
427 bool rg_load_index =
false;
428 int rg_saved_index_fid = 0;
431 bool rg_preproc =
true;
432 char *rg_solver =
nullptr;
433 char *rg_train =
nullptr;
434 char *rg_mean =
nullptr;
436 bool rg_pretrained =
false;
439 double riu_likelihood_alpha = 50.0;
442 double sd_learning_rate = 0.1;
445 bool gb_additive_update =
false;
448 bool pgb_additive_update =
false;
449 int pgb_sub_regions_x = 3;
450 int pgb_sub_regions_y = 3;
453 bool rbf_additive_update =
false;
454 int rbf_n_ctrl_pts_x = 3;
455 int rbf_n_ctrl_pts_y = 3;
458 int pf_max_iters = 1;
459 int pf_n_particles = 100;
460 int pf_dynamic_model = 1;
461 int pf_update_type = 0;
462 int pf_likelihood_func = 0;
463 int pf_resampling_type = 0;
464 int pf_mean_type = 1;
465 bool pf_reset_to_mean =
false;
466 vectori pf_ssm_sigma_ids;
467 vectori pf_ssm_mean_ids;
468 bool pf_update_distr_wts =
false;
469 double pf_min_distr_wt = 0.1;
470 double pf_adaptive_resampling_thresh = 0;
471 double pf_measurement_sigma = 0.1;
472 vectord pf_pix_sigma;
473 int pf_show_particles = 0;
474 bool pf_jacobian_as_sigma =
false;
475 bool pf_debug_mode =
false;
479 vectorvi pfk_ssm_sigma_ids;
489 char* hrch_sm =
"iclk";
490 char* hrch_am =
"ssd";
493 int casc_n_trackers = 2;
494 bool casc_enable_feedback = 1;
495 bool casc_auto_reinit =
false;
496 double casc_reinit_err_thresh = 1.0;
497 int casc_reinit_frame_gap = 1;
500 char* grid_sm =
"iclk";
501 char* grid_am =
"ssd";
502 char* grid_ssm =
"2";
503 char* grid_ilm =
"0";
506 int grid_patch_size = 10;
507 int grid_patch_res = 0;
508 int grid_reset_at_each_frame = 1;
509 bool grid_dyn_patch_size =
false;
510 bool grid_patch_centroid_inside =
true;
511 double grid_fb_err_thresh = 0;
512 bool grid_fb_reinit = 0;
513 bool grid_show_trackers =
false;
514 bool grid_show_tracker_edges =
false;
515 bool grid_use_tbb =
true;
517 int grid_pyramid_levels = 2;
518 bool grid_use_min_eig_vals = 0;
519 bool grid_rgb_input =
false;
520 double grid_min_eig_thresh = 1e-4;
522 std::string feat_detector_type =
"orb";
523 std::string feat_descriptor_type =
"orb";
524 double feat_max_dist_ratio = 0.75;
525 int feat_min_matches = 10;
526 bool feat_rebuild_index =
false;
527 bool feat_use_cv_flann =
true;
528 bool feat_show_keypoints = 0;
529 bool feat_show_matches = 0;
530 bool feat_debug_mode = 0;
532 bool grid_use_const_grad =
true;
534 int sift_n_features = 0;
535 int sift_n_octave_layers = 3;
536 double sift_contrast_thresh = 0.04;
537 double sift_edge_thresh = 10;
538 double sift_sigma = 1.6;
540 double surf_hessian_threshold = 100;
541 int surf_n_octaves = 4;
542 int surf_n_octave_layers = 3;
543 bool surf_extended =
false;
544 bool surf_upright =
false;
546 int brisk_thresh = 30;
547 int brisk_octaves = 3;
548 float brisk_pattern_scale = 1.0f;
550 int orb_n_features = 500;
551 float orb_scale_factor = 1.2f;
552 int orb_n_levels = 8;
553 int orb_edge_threshold = 31;
554 int orb_first_level = 0;
556 int orb_score_type = 0;
557 int orb_patch_size = 31;
558 int orb_fast_threshold = 20;
561 int mser_min_area = 60;
562 int mser_max_area = 14400;
563 double mser_max_variation = 0.25;
564 double mser_min_diversity = .2;
565 int mser_max_evolution = 200;
566 double mser_area_threshold = 1.01;
567 double mser_min_margin = 0.003;
568 int mser_edge_blur_size = 5;
570 int fast_threshold = 10;
571 bool fast_non_max_suppression =
true;
574 int agast_threshold = 10;
575 bool agast_non_max_suppression =
true;
578 int gftt_max_corners = 1000;
579 double gftt_quality_level = 0.01;
580 double gftt_min_distance = 1;
581 int gftt_block_size = 3;
582 bool gftt_use_harris_detector =
false;
583 double gftt_k = 0.04;
585 int brief_bytes = 32;
586 bool brief_use_orientation =
false;
588 bool freak_orientation_normalized =
true;
589 bool freak_scale_normalized =
true;
590 float freak_pattern_scale = 22.0f;
591 int freak_n_octaves = 4;
593 int lucid_kernel = 1;
594 int lucid_blur_kernel = 2;
596 int latch_bytes = 32;
597 bool latch_rotation_invariance =
true;
598 int latch_half_ssd_size = 3;
600 float daisy_radius = 15;
601 int daisy_q_radius = 3;
602 int daisy_q_theta = 8;
603 int daisy_q_hist = 8;
604 int daisy_norm = 100;
606 bool daisy_interpolation =
true;
607 bool daisy_use_orientation =
false;
610 float vgg_isigma = 1.4f;
611 bool vgg_img_normalize =
true;
612 bool vgg_use_scale_orientation =
true;
613 float vgg_scale_factor = 6.25f;
614 bool vgg_dsc_normalize =
false;
616 int boost_desc_desc = 302;
617 bool boost_desc_use_scale_orientation =
true;
618 float boost_desc_scale_factor = 6.25f;
620 int star_max_size = 45;
621 int star_response_threshold = 30;
622 int star_line_threshold_projected = 10;
623 int star_line_threshold_binarized = 8;
624 int star_suppress_nonmax_size = 5;
626 int msd_patch_radius = 3;
627 int msd_search_area_radius = 5;
628 int msd_nms_radius = 5;
629 int msd_nms_scale_radius = 0;
630 float msd_th_saliency = 250.0f;
632 float msd_scale_factor = 1.25f;
633 int msd_n_scales = -1;
634 bool msd_compute_orientation =
false;
638 double est_ransac_reproj_thresh = 10;
639 int est_n_model_pts = 4;
640 int est_max_iters = 2000;
641 int est_max_subset_attempts = 300;
642 bool est_use_boost_rng =
false;
643 double est_confidence = 0.995;
644 bool est_refine =
true;
645 int est_lm_max_iters = 10;
648 char* line_sm =
"iclk";
649 char* line_am =
"ssd";
650 char* line_ssm =
"2";
651 int line_grid_size = 5;
652 int line_patch_size = 25;
653 bool line_use_constant_slope =
false;
654 bool line_use_ls =
false;
655 double line_inter_alpha_thresh = 0.1;
656 double line_intra_alpha_thresh = 0.05;
657 bool line_reset_pos =
false;
658 bool line_reset_template =
false;
659 bool line_debug_mode =
false;
662 char* rkl_sm =
"iclk";
663 bool rkl_enable_spi =
true;
664 bool rkl_enable_feedback =
true;
665 bool rkl_failure_detection =
true;
666 double rkl_failure_thresh = 15.0;
669 int prl_n_trackers = 1;
670 int prl_estimation_method = 0;
671 bool prl_reset_to_mean =
false;
672 bool prl_auto_reinit =
false;
673 double prl_reinit_err_thresh = 1.0;
674 int prl_reinit_frame_gap = 1;
677 std::string pyr_sm =
"fc";
678 int pyr_no_of_levels = 3;
679 double pyr_scale_factor = 0.50;
680 bool pyr_scale_res =
true;
681 bool pyr_show_levels =
false;
684 char* diag_am =
"ssd";
685 char* diag_ssm =
"2";
686 char* diag_ilm =
"0";
687 bool diag_3d =
false;
688 std::vector<int> diag_3d_ids = { 0, 1 };
689 int diag_frame_gap = 0;
690 double diag_range = 0;
691 std::vector<double> diag_ssm_range;
692 std::vector<double> diag_am_range;
693 int diag_ssm_range_id = 0;
694 int diag_am_range_id = 0;
695 std::string diag_gen_norm =
"000";
696 std::string diag_gen_jac =
"000";
697 std::string diag_gen_hess =
"0000";
698 std::string diag_gen_hess2 =
"0000";
699 std::string diag_gen_hess_sum =
"0000";
700 std::string diag_gen_num =
"000";
701 std::string diag_gen_ssm =
"0";
703 bool diag_bin =
true;
704 bool diag_inv =
true;
705 bool diag_show_data =
false;
706 bool diag_show_corners =
false;
707 bool diag_show_patches =
false;
708 bool diag_verbose =
false;
710 double diag_grad_diff = 0.1;
712 int diag_update_type = 0;
713 int diag_start_id = 0;
716 std::string diag_out_prefix;
719 bool diag_enable_validation =
false;
720 double diag_validation_prec = 1e-20;
722 bool esm_spi_enable =
false;
723 double esm_spi_thresh = 10;
726 double dsst_padding = 1;
727 double dsst_sigma = 1.0 / 16;
728 double dsst_scale_sigma = 1.0 / 4;
729 double dsst_lambda = 1e-2;
730 double dsst_learning_rate = 0.025;
731 int dsst_number_scales = 33;
732 int dsst_number_rots = 21;
733 double dsst_scale_step = 1.02;
734 double dsst_rot_step = 2;
735 int dsst_resize_factor = 4;
736 int dsst_is_scaling = 1;
737 int dsst_is_rotating = 1;
738 int dsst_bin_size = 1;
743 double kcf_output_sigma_factor;
744 double kcf_interp_factor;
745 double kcf_kernel_sigma;
747 int kcf_number_scales;
748 double kcf_scale_step;
749 double kcf_scale_model_max_area;
750 double kcf_scale_sigma_factor;
751 double kcf_scale_learning_rate;
753 int kcf_resize_factor;
755 int mil_algorithm = 100;
756 int mil_num_classifiers = 100;
757 float mil_overlap = 0.99f;
758 float mil_search_factor = 2.0f;
759 float mil_pos_radius_train = 4.0f;
760 int mil_neg_num_train = 65;
761 int mil_num_features = 250;
764 bool cmt_estimate_scale =
true;
765 bool cmt_estimate_rotation =
false;
766 char* cmt_feat_detector =
"FAST";
767 char* cmt_desc_extractor =
"BRISK";
768 double cmt_resize_factor = 0.5;
771 bool tld_tracker_enabled =
true;
772 bool tld_detector_enabled =
true;
773 bool tld_learning_enabled =
true;
774 bool tld_alternating =
false;
777 int rct_min_n_rect = 2;
778 int rct_max_n_rect = 4;
780 int rct_rad_outer_pos = 4;
781 int rct_rad_search_win = 25;
782 double rct_learning_rate = 0.85;
784 std::string strk_config_path =
"Config/struck.cfg";
787 char* vptt_sm =
"fclk";
788 char* vptt_am =
"ssd";
789 char* vptt_ssm =
"8";
790 int vptt_max_iters = 30;
792 double vptt_lambda = 0.001;
793 double vptt_thresh_grad = 60;
794 int vptt_pyr_n_levels = 0;
795 int vptt_pyr_level_to_stop = 1;
798 int vp_usb_n_buffers = 3;
799 std::string vp_usb_res =
"0";
800 std::string vp_usb_fps =
"0";
801 std::string vp_fw_res =
"0";
802 std::string vp_fw_fps =
"0";
803 std::string vp_fw_depth =
"0";
804 std::string vp_fw_iso =
"0";
805 bool vp_fw_print_info;
806 float vp_pg_fw_shutter_ms;
808 float vp_pg_fw_exposure;
809 float vp_pg_fw_brightness;
812 std::string cv3_tracker_type =
"mil";
817 double pfsl3_rot = 0;
818 double pfsl3_ncc_std = 0.1;
819 double pfsl3_pca_std = 10;
820 std::vector<double> pfsl3_state_std;
821 double pfsl3_ar_p = 0.5;
824 int pfsl3_n_iter = 5;
825 int pfsl3_sampling = 0;
826 int pfsl3_capture = 0;
827 int pfsl3_mean_check = 0;
828 int pfsl3_outlier_flag = 0;
830 int pfsl3_init_size = 15;
831 int pfsl3_update_period = 5;
832 float pfsl3_ff = 0.99f;
833 double pfsl3_basis_thr = 0.95;
834 int pfsl3_max_num_basis = 30;
835 int pfsl3_max_num_used_basis = 10;
836 bool pfsl3_show_weights =
false;
837 bool pfsl3_show_templates =
false;
838 bool pfsl3_debug_mode =
false;
841 bool gtrn_do_train =
true;
843 bool gtrn_show_intermediate_output =
false;
844 std::string gtrn_model_file =
"Data/GOTURN/tracker.prototxt";
845 std::string gtrn_trained_file =
"Data/GOTURN/solver.prototxt";
848 float dft_res_to_l = 1e-10f;
849 float dft_p_to_l = 5e-5f;
850 int dft_max_iter = 50;
851 int dft_max_iter_single_level = 10;
852 std::vector<float> dft_pyramid_smoothing_variance = { 7 };
853 float dft_presmoothing_variance = 1;
854 int dft_n_control_points_on_edge = 25;
855 bool dft_b_adaptative_choice_of_points = 0;
856 bool dft_b_normalize_descriptors = 0;
857 int dft_optimization_type = 2;
860 int frg_search_margin = 7;
861 int frg_hist_cmp_metric = 3;
862 double frg_resize_factor = 0.5;
863 bool frg_show_window =
false;
866 std::vector<int> extracted_frame_ids = { 0, 1, 2, 3, 4 };
867 int extraction_id = 0;
869 int pca_n_eigenvec = 16;
870 int pca_batchsize = 5;
871 float pca_f_factor = 0.95f;
872 bool pca_show_basis =
false;
876 char* dfm_layer_name =
"conv1";
879 char *dfm_model_f_name =
"../../../VGG_Models/VGG_deploy.prototxt";
880 char *dfm_params_f_name =
"../../../VGG_Models/VGG_CNN_F.caffemodel";
881 char *dfm_mean_f_name =
"../../../VGG_Models/VGG_mean.binaryproto";
885 double spi_pix_diff_thresh = 10;
886 double spi_grad_thresh = 0.005;
887 bool spi_grad_use_union =
false;
889 int spi_gftt_max_corners = 1000;
890 double spi_gftt_quality_level = 0.01;
891 double spi_gftt_min_distance = 0;
892 int spi_gftt_block_size = 3;
893 bool spi_gftt_use_harris_detector =
false;
894 double spi_gftt_k = 0.04;
896 bool spi_gftt_use_union =
false;
897 int spi_gftt_neigh_offset = 0;
900 std::string reg_ssm =
"8";
901 std::string reg_ilm =
"0";
902 int reg_track_border = 0;
903 bool reg_grayscale_img =
false;
904 bool reg_show_output =
true;
905 bool reg_save_as_video =
false;
906 int reg_video_fps = 24;
909 std::string syn_ssm =
"c8";
910 std::string syn_ilm =
"0";
911 int syn_frame_id = 0;
912 bool syn_grayscale_img =
false;
913 bool syn_continuous_warping =
true;
914 vectori syn_ssm_sigma_ids, syn_ssm_mean_ids;
915 vectori syn_am_sigma_ids, syn_am_mean_ids;
916 double syn_pix_sigma = 0;
917 bool syn_am_on_obj =
false;
918 bool syn_warp_entire_image =
false;
919 int syn_background_type = 0;
920 bool syn_use_inv_warp =
false;
921 std::string syn_out_suffix;
922 int syn_n_frames = 1;
923 bool syn_add_noise =
true;
924 double syn_noise_mean = 0.0;
925 double syn_noise_sigma = 1.0;
926 bool syn_save_as_video =
false;
927 int syn_video_fps = 24;
928 int syn_jpg_quality = 100;
929 bool syn_show_output =
true;
932 bool mos_inv_tracking =
true;
933 int mos_use_norm_corners =
true;
934 int mos_track_border = 100;
935 int mos_border_width = 200;
936 int mos_border_height = 200;
937 int mos_init_offset_x = 0;
938 int mos_init_offset_y = 0;
939 int mos_disp_width = 200;
940 int mos_disp_height = 200;
941 bool mos_show_grid =
false;
942 bool mos_show_tracked_img =
false;
943 bool mos_show_patch =
false;
944 bool mos_show_mask =
false;
945 bool mos_use_write_mask =
false;
946 bool mos_save_img =
true;
947 std::string mos_out_fname;
948 std::string mos_out_fmt =
"jpg";
951 std::vector<std::string> qr_input;
952 std::string qr_root_dir =
"Data/QRTracker";
953 std::string qr_detector_ssm =
"4";
954 double qr_duplicate_min_dist = 50;
955 double qr_min_size = 10;
956 bool qr_init_with_rect = 1;
957 int qr_n_markers = -1;
959 int py_visualize = 1;
960 int py_live_init = 1;
962 int mex_visualize = 1;
963 int mex_live_init = 1;
965 inline void split(
const std::string &s,
char delim, std::vector<std::string> &elems) {
968 while(getline(ss, item, delim)) {
970 elems.push_back(item);
975 inline int readParams(std::vector<char*> &fargv,
const char* fname =
"mtf.cfg"){
979 if((err = fopen_s(&fid, fname,
"r")) != 0) {
980 printf(
"Parameter file: %s not found: %s\n",
981 fname, strerror(err));
985 FILE *fid = fopen(fname,
"r");
987 printf(
"\n Parameter file: %s not found\n", fname);
994 fargv.push_back(
nullptr);
997 char *temp =
new char[500];
998 fgets(temp, 500, fid);
1001 if(strlen(temp) <= 1 || temp[0] ==
'#'){
1005 fargv.push_back(temp);
1013 inline void processStringParam(std::string &str_out,
const char* param){
1014 if(!strcmp(param,
"#")){
1018 str_out = std::string(param);
1021 inline void processStringParam(
char* &str_out,
const char* param){
1025 if(!strcmp(param,
"#")){
1034 str_out =
new char[strlen(param) + 1];
1035 strcpy(str_out, param);
1040 inline vectord atof_arr(
char *str,
const char *sep =
","){
1041 char *param_str = strtok(str, sep);
1042 std::vector<double> param_arr;
1046 double param_num = atof(param_str);
1047 param_arr.push_back(param_num);
1049 param_str = strtok(
nullptr, sep);
1064 inline vectorf atof32_arr(
char *str,
const char *sep =
","){
1065 char *param_str = strtok(str, sep);
1066 std::vector<float> param_arr;
1068 float param_num = atof32(param_str);
1069 param_arr.push_back(param_num);
1070 param_str = strtok(
nullptr, sep);
1074 inline vectori atoi_arr(
char *str,
const char *sep =
","){
1075 char *param_str = strtok(str, sep);
1076 std::vector<int> param_arr;
1080 int param_num = atoi(param_str);
1081 param_arr.push_back(param_num);
1083 param_str = strtok(
nullptr, sep);
1098 inline vector_s string_arr(
char *str,
const char *sep =
","){
1099 char *param_str = strtok(str, sep);
1102 param_arr.push_back(std::string(param_str));
1103 param_str = strtok(
nullptr, sep);
1107 inline char atoc(
char *arg_val){
return arg_val[0]; }
1108 inline int atoc_i(
char *arg_val){
return arg_val[0] -
'0'; }
1110 inline void processAgrumentUnchained(
char *arg_name,
char *arg_val,
1111 char *arg_prefix =
nullptr){
1112 if(arg_val[0] ==
'#'){
return; }
1113 parse_param(n_trackers, atoi);
1114 parse_param(track_single_obj, atoi);
1115 parse_param(seq_id, atoi);
1116 parse_param(actor_id, atoi);
1117 parse_param(pipeline, atoc);
1118 parse_param(img_source, atoc);
1119 parse_param(rec_source, atoc);
1120 parse_param(rec_fps, atoi);
1121 parse_param(rec_seq_suffix, std::string);
1122 parse_param(img_resize_factor, atof);
1123 parse_param(gt_write_ssm_params, atoi);
1124 parse_param(write_tracking_data, atoc_i);
1125 parse_param(overwrite_gt, atoc_i);
1126 parse_param(tracking_data_fname, std::string);
1127 parse_param(record_frames_fname, std::string);
1128 parse_param(record_frames_dir, std::string);
1129 parse_param(read_obj_fname, std::string);
1130 parse_param(write_obj_fname, std::string);
1131 parse_param(mtf_visualize, atoc_i);
1132 parse_param(show_ground_truth, atoc_i);
1133 parse_param(xv_visualize, atoc_i);
1134 parse_param(read_obj_from_gt, atoi);
1135 parse_param(sel_quad_obj, atoi);
1138 inline void processAgrument(
char *arg_name,
char *arg_val,
1139 char *arg_prefix =
nullptr){
1140 if(arg_val[0] ==
'#'){
return; }
1141 if(!strcmp(arg_name,
"n_trackers")){
1142 n_trackers =
static_cast<unsigned int>(atoi(arg_val));
1145 if(!strcmp(arg_name,
"track_single_obj")){
1146 track_single_obj = atoi(arg_val);
1149 if(!strcmp(arg_name,
"source_id") || !strcmp(arg_name,
"seq_id")){
1150 seq_id = atoi(arg_val);
1153 if(!strcmp(arg_name,
"actor_id")){
1154 actor_id = atoi(arg_val);
1157 if(!strcmp(arg_name,
"pipeline")){
1158 pipeline = arg_val[0];
1161 if(!strcmp(arg_name,
"img_source")){
1162 img_source = arg_val[0];
1165 if(!strcmp(arg_name,
"rec_source")){
1166 rec_source = arg_val[0];
1169 if(!strcmp(arg_name,
"rec_fps")){
1170 rec_fps = atoi(arg_val);
1173 if(!strcmp(arg_name,
"rec_seq_suffix")){
1174 rec_seq_suffix = std::string(arg_val);
1177 if(!strcmp(arg_name,
"img_resize_factor")){
1178 img_resize_factor = atof(arg_val);
1181 if(!strcmp(arg_name,
"gt_write_ssm_params")){
1182 gt_write_ssm_params = atoi(arg_val);
1185 if(!strcmp(arg_name,
"write_tracking_data")){
1186 write_tracking_data = arg_val[0] -
'0';
1189 if(!strcmp(arg_name,
"overwrite_gt")){
1190 overwrite_gt = arg_val[0] -
'0';
1193 if(!strcmp(arg_name,
"tracking_data_fname")){
1194 tracking_data_fname = std::string(arg_val);
1197 if(!strcmp(arg_name,
"record_frames_fname")){
1198 record_frames_fname = std::string(arg_val);
1201 if(!strcmp(arg_name,
"record_frames_dir")){
1202 record_frames_dir = std::string(arg_val);
1205 if(!strcmp(arg_name,
"read_obj_fname")){
1206 read_obj_fname = std::string(arg_val);
1209 if(!strcmp(arg_name,
"write_obj_fname")){
1210 write_obj_fname = std::string(arg_val);
1213 if(!strcmp(arg_name,
"show_corner_ids")){
1214 show_corner_ids = arg_val[0] -
'0';
1217 if(!strcmp(arg_name,
"tracker_labels")){
1218 tracker_labels.push_back(std::string(arg_val));
1221 if(!strcmp(arg_name,
"mtf_visualize")){
1222 mtf_visualize = arg_val[0] -
'0';
1225 if(!strcmp(arg_name,
"show_ground_truth")){
1226 show_ground_truth = arg_val[0] -
'0';
1229 if(!strcmp(arg_name,
"xv_visualize")){
1230 xv_visualize = arg_val[0] -
'0';
1233 if(!strcmp(arg_name,
"read_obj_from_gt")){
1234 read_obj_from_gt = atoi(arg_val);
1237 if(!strcmp(arg_name,
"sel_quad_obj")){
1238 sel_quad_obj = atoi(arg_val);
1241 if(!strcmp(arg_name,
"line_thickness")){
1242 line_thickness = atoi(arg_val);
1245 if(!strcmp(arg_name,
"reinit_gt_from_bin")){
1246 reinit_gt_from_bin = arg_val[0] -
'0';
1249 if(!strcmp(arg_name,
"read_obj_from_file")){
1250 read_obj_from_file = arg_val[0] -
'0';
1253 if(!strcmp(arg_name,
"write_objs")){
1254 write_objs = arg_val[0] -
'0';
1257 if(!strcmp(arg_name,
"record_frames")){
1258 record_frames = arg_val[0] -
'0';
1261 if(!strcmp(arg_name,
"source_name") || !strcmp(arg_name,
"seq_name")){
1262 seq_name = std::string(arg_val);
1265 if(!strcmp(arg_name,
"source_path") || !strcmp(arg_name,
"seq_path")){
1266 seq_path = std::string(arg_val);
1269 if(!strcmp(arg_name,
"source_fmt") || !strcmp(arg_name,
"seq_fmt")){
1270 seq_fmt = std::string(arg_val);
1273 if(!strcmp(arg_name,
"invert_seq")){
1274 invert_seq = atoi(arg_val);
1277 if(!strcmp(arg_name,
"patch_size")){
1278 patch_size = atoi(arg_val);
1281 if(!strcmp(arg_name,
"db_root_path") || !strcmp(arg_name,
"root_path")){
1282 db_root_path = std::string(arg_val);
1286 if(!strcmp(arg_name,
"xv_scale")){
1287 xv_scale = atof(arg_val);
1290 if(!strcmp(arg_name,
"xv_no_of_levels")){
1291 xv_no_of_levels = atoi(arg_val);
1294 if(!strcmp(arg_name,
"xv_steps_per_frame")){
1295 xv_steps_per_frame = atoi(arg_val);
1298 if(!strcmp(arg_name,
"xv_patch_size")){
1299 xv_patch_size = atoi(arg_val);
1302 if(!strcmp(arg_name,
"xvg_grid_size_x")){
1303 xvg_grid_size_x = atoi(arg_val);
1306 if(!strcmp(arg_name,
"xvg_grid_size_y")){
1307 xvg_grid_size_y = atoi(arg_val);
1310 if(!strcmp(arg_name,
"xvg_adjust_grid")){
1311 xvg_adjust_grid = arg_val[0] -
'0';
1314 if(!strcmp(arg_name,
"xvg_adjust_lines")){
1315 xvg_adjust_lines = arg_val[0] -
'0';
1318 if(!strcmp(arg_name,
"xvg_reset_pos")){
1319 xvg_reset_pos = atoi(arg_val);
1322 if(!strcmp(arg_name,
"xvg_reset_wts")){
1323 xvg_reset_wts = atoi(arg_val);
1326 if(!strcmp(arg_name,
"xvg_pause_after_line")){
1327 xvg_pause_after_line = atoi(arg_val);
1330 if(!strcmp(arg_name,
"xvg_use_constant_slope")){
1331 xvg_use_constant_slope = atoi(arg_val);
1334 if(!strcmp(arg_name,
"xvg_use_ls")){
1335 xvg_use_ls = atoi(arg_val);
1338 if(!strcmp(arg_name,
"xvg_inter_alpha_thresh")){
1339 xvg_inter_alpha_thresh = atof(arg_val);
1342 if(!strcmp(arg_name,
"xvg_intra_alpha_thresh")){
1343 xvg_intra_alpha_thresh = atof(arg_val);
1346 if(!strcmp(arg_name,
"xvg_show_tracked_pts")){
1347 xvg_show_tracked_pts = atoi(arg_val);
1350 if(!strcmp(arg_name,
"xvg_update_wts")){
1351 xvg_update_wts = atoi(arg_val);
1354 if(!strcmp(arg_name,
"xvg_sel_reset_thresh")){
1355 xvg_sel_reset_thresh = atof(arg_val);
1359 if(!strcmp(arg_name,
"reset_template")){
1360 reset_template = atoi(arg_val);
1363 if(!strcmp(arg_name,
"debug_mode")){
1364 debug_mode = atoi(arg_val);
1367 if(!strcmp(arg_name,
"pause_after_frame")){
1368 pause_after_frame = atoi(arg_val);
1371 if(!strcmp(arg_name,
"print_corners")){
1372 print_corners = atoi(arg_val);
1375 if(!strcmp(arg_name,
"print_fps")){
1376 print_fps = atoi(arg_val);
1379 if(!strcmp(arg_name,
"show_proc_img")){
1380 show_proc_img = atoi(arg_val);
1383 if(!strcmp(arg_name,
"res_from_size")){
1384 res_from_size = atof(arg_val);
1387 if(!strcmp(arg_name,
"mtf_res")){
1388 mtf_res = atoi(arg_val);
1391 if(!strcmp(arg_name,
"resx")){
1392 resx = atoi(arg_val);
1395 if(!strcmp(arg_name,
"resy")){
1396 resy = atoi(arg_val);
1399 if(!strcmp(arg_name,
"epsilon")){
1400 epsilon = atof(arg_val);
1403 if(!strcmp(arg_name,
"max_iters")){
1404 max_iters = atoi(arg_val);
1407 if(!strcmp(arg_name,
"mtf_sm")){
1408 processStringParam(mtf_sm, arg_val);
1411 if(!strcmp(arg_name,
"mtf_am")){
1412 processStringParam(mtf_am, arg_val);
1415 if(!strcmp(arg_name,
"mtf_ssm")){
1416 processStringParam(mtf_ssm, arg_val);
1419 if(!strcmp(arg_name,
"mtf_ilm")){
1420 processStringParam(mtf_ilm, arg_val);
1423 if(!strcmp(arg_name,
"enable_nt")){
1424 enable_nt = atoi(arg_val);
1427 if(!strcmp(arg_name,
"invalid_state_err_thresh")){
1428 invalid_state_err_thresh = atof(arg_val);
1431 if(!strcmp(arg_name,
"invalid_state_check")){
1432 invalid_state_check = atoi(arg_val);
1435 if(!strcmp(arg_name,
"uchar_input")){
1436 uchar_input = atoi(arg_val);
1440 if(!strcmp(arg_name,
"ic_update_ssm")){
1441 ic_update_ssm = atoi(arg_val);
1444 if(!strcmp(arg_name,
"ic_chained_warp")){
1445 ic_chained_warp = atoi(arg_val);
1448 if(!strcmp(arg_name,
"ic_hess_type")){
1449 ic_hess_type = atoi(arg_val);
1453 if(!strcmp(arg_name,
"fc_chained_warp")){
1454 fc_chained_warp = atoi(arg_val);
1457 if(!strcmp(arg_name,
"fc_hess_type")){
1458 fc_hess_type = atoi(arg_val);
1461 if(!strcmp(arg_name,
"fc_write_ssm_updates")){
1462 fc_write_ssm_updates = atoi(arg_val);
1465 if(!strcmp(arg_name,
"fc_show_grid")){
1466 fc_show_grid = atoi(arg_val);
1469 if(!strcmp(arg_name,
"fc_show_patch")){
1470 fc_show_patch = atoi(arg_val);
1473 if(!strcmp(arg_name,
"fc_patch_resize_factor")){
1474 fc_patch_resize_factor = atoi(arg_val);
1477 if(!strcmp(arg_name,
"fc_debug_mode")){
1478 fc_debug_mode = atoi(arg_val);
1482 if(!strcmp(arg_name,
"ia_hess_type")){
1483 ia_hess_type = atoi(arg_val);
1486 if(!strcmp(arg_name,
"fa_hess_type")){
1487 fa_hess_type = atoi(arg_val);
1490 if(!strcmp(arg_name,
"fa_show_grid")){
1491 fa_show_grid = atoi(arg_val);
1494 if(!strcmp(arg_name,
"fa_patch_resize_factor")){
1495 fa_patch_resize_factor = atof(arg_val);
1498 if(!strcmp(arg_name,
"fa_show_patch")){
1499 fa_show_patch = atoi(arg_val);
1502 if(!strcmp(arg_name,
"fa_write_frames")){
1503 fa_write_frames = atoi(arg_val);
1507 if(!strcmp(arg_name,
"ssd_show_template")){
1508 ssd_show_template = atoi(arg_val);
1512 if(!strcmp(arg_name,
"input_buffer_size")){
1513 input_buffer_size = atoi(arg_val);
1516 if(!strcmp(arg_name,
"nssd_norm_pix_max")){
1517 nssd_norm_pix_max = atof(arg_val);
1520 if(!strcmp(arg_name,
"nssd_norm_pix_min")){
1521 nssd_norm_pix_min = atof(arg_val);
1524 if(!strcmp(arg_name,
"zncc_likelihood_alpha")){
1525 zncc_likelihood_alpha = atof(arg_val);
1528 if(!strcmp(arg_name,
"init_frame_id")){
1529 init_frame_id = atoi(arg_val);
1532 if(!strcmp(arg_name,
"start_frame_id")){
1533 start_frame_id = atoi(arg_val);
1536 if(!strcmp(arg_name,
"frame_gap")){
1537 frame_gap = atoi(arg_val);
1540 if(!strcmp(arg_name,
"end_frame_id")){
1541 end_frame_id = atoi(arg_val);
1544 if(!strcmp(arg_name,
"show_tracking_error")){
1545 show_tracking_error = atoi(arg_val);
1548 if(!strcmp(arg_name,
"write_tracking_error")){
1549 write_tracking_error = atoi(arg_val);
1552 if(!strcmp(arg_name,
"write_tracking_sr")){
1553 write_tracking_sr = atoi(arg_val);
1556 if(!strcmp(arg_name,
"sr_err_thresh")){
1557 sr_err_thresh = atof_arr(arg_val);
1560 if(!strcmp(arg_name,
"fps_col")){
1561 fps_col = std::string(arg_val);
1564 if(!strcmp(arg_name,
"obj_cols")){
1565 obj_cols = string_arr(arg_val);
1568 if(!strcmp(arg_name,
"gt_col")){
1569 gt_col = std::string(arg_val);
1572 if(!strcmp(arg_name,
"err_col")){
1573 err_col = std::string(arg_val);
1576 if(!strcmp(arg_name,
"tracking_err_type")){
1577 tracking_err_type = atoi(arg_val);
1580 if(!strcmp(arg_name,
"show_jaccard_error")){
1581 show_jaccard_error = atoi(arg_val);
1584 if(!strcmp(arg_name,
"grad_eps")){
1585 grad_eps = strtod(arg_val,
nullptr);
1588 if(!strcmp(arg_name,
"hess_eps")){
1589 hess_eps = strtod(arg_val,
nullptr);
1592 if(!strcmp(arg_name,
"likelihood_alpha")){
1593 likelihood_alpha = strtod(arg_val,
nullptr);
1596 if(!strcmp(arg_name,
"likelihood_beta")){
1597 likelihood_beta = strtod(arg_val,
nullptr);
1600 if(!strcmp(arg_name,
"dist_from_likelihood")){
1601 dist_from_likelihood = atoi(arg_val);
1605 if(!strcmp(arg_name,
"reinit_at_each_frame")){
1606 reinit_at_each_frame = atoi(arg_val);
1609 if(!strcmp(arg_name,
"reset_at_each_frame")){
1610 reset_at_each_frame = atoi(arg_val);
1613 if(!strcmp(arg_name,
"reset_to_init")){
1614 reset_to_init = atoi(arg_val);
1617 if(!strcmp(arg_name,
"reinit_on_failure")){
1618 reinit_on_failure = atoi(arg_val);
1621 if(!strcmp(arg_name,
"reinit_err_thresh")){
1622 reinit_err_thresh = atof(arg_val);
1625 if(!strcmp(arg_name,
"reinit_frame_skip")){
1626 reinit_frame_skip = atoi(arg_val);
1629 if(!strcmp(arg_name,
"reinit_with_new_obj")){
1630 reinit_with_new_obj = atoi(arg_val);
1634 if(!strcmp(arg_name,
"use_reinit_gt")){
1635 use_reinit_gt = atoi(arg_val);
1639 if(!strcmp(arg_name,
"use_opt_gt")){
1640 use_opt_gt = atoi(arg_val);
1643 if(!strcmp(arg_name,
"opt_gt_ssm")){
1644 opt_gt_ssm = std::string(arg_val);
1648 if(!strcmp(arg_name,
"pre_proc_type")){
1649 pre_proc_type = std::string(arg_val);
1652 if(!strcmp(arg_name,
"pre_proc_hist_eq")){
1653 pre_proc_hist_eq = atoi(arg_val);
1657 if(!strcmp(arg_name,
"gauss_kernel_size")){
1658 gauss_kernel_size = atoi(arg_val);
1661 if(!strcmp(arg_name,
"gauss_sigma_x")){
1662 gauss_sigma_x = atof(arg_val);
1665 if(!strcmp(arg_name,
"gauss_sigma_y")){
1666 gauss_sigma_y = atof(arg_val);
1670 if(!strcmp(arg_name,
"med_kernel_size")){
1671 med_kernel_size = atoi(arg_val);
1675 if(!strcmp(arg_name,
"box_kernel_size")){
1676 box_kernel_size = atoi(arg_val);
1680 if(!strcmp(arg_name,
"bil_diameter")){
1681 bil_diameter = atoi(arg_val);
1684 if(!strcmp(arg_name,
"bil_sigma_col")){
1685 bil_sigma_col = atof(arg_val);
1688 if(!strcmp(arg_name,
"bil_sigma_space")){
1689 bil_sigma_space = atof(arg_val);
1693 if(!strcmp(arg_name,
"sobel_kernel_size")){
1694 sobel_kernel_size = atoi(arg_val);
1697 if(!strcmp(arg_name,
"sobel_normalize")){
1698 sobel_normalize = atoi(arg_val);
1702 if(!strcmp(arg_name,
"aniso_lambda")){
1703 aniso_lambda = atof(arg_val);
1706 if(!strcmp(arg_name,
"aniso_kappa")){
1707 aniso_kappa = atof(arg_val);
1710 if(!strcmp(arg_name,
"aniso_n_iters")){
1711 aniso_n_iters = atoi(arg_val);
1715 if(!strcmp(arg_name,
"aff_normalized_init")){
1716 aff_normalized_init = atoi(arg_val);
1719 if(!strcmp(arg_name,
"aff_pt_based_sampling")){
1720 aff_pt_based_sampling = atoi(arg_val);
1724 if(!strcmp(arg_name,
"laff_normalized_init")){
1725 laff_normalized_init = atoi(arg_val);
1728 if(!strcmp(arg_name,
"laff_grad_eps")){
1729 laff_grad_eps = atof(arg_val);
1733 if(!strcmp(arg_name,
"hom_normalized_init")){
1734 hom_normalized_init = atoi(arg_val);
1737 if(!strcmp(arg_name,
"hom_corner_based_sampling")){
1738 hom_corner_based_sampling = atoi(arg_val);
1742 if(!strcmp(arg_name,
"lhom_normalized_init")){
1743 lhom_normalized_init = atoi(arg_val);
1746 if(!strcmp(arg_name,
"lhom_grad_eps")){
1747 lhom_grad_eps = atof(arg_val);
1751 if(!strcmp(arg_name,
"asrt_normalized_init")){
1752 asrt_normalized_init = atoi(arg_val);
1755 if(!strcmp(arg_name,
"asrt_pt_based_sampling")){
1756 asrt_pt_based_sampling = atoi(arg_val);
1760 if(!strcmp(arg_name,
"sim_normalized_init")){
1761 sim_normalized_init = atoi(arg_val);
1764 if(!strcmp(arg_name,
"sim_n_model_pts")){
1765 sim_n_model_pts = atoi(arg_val);
1768 if(!strcmp(arg_name,
"sim_geom_sampling")){
1769 sim_geom_sampling = atoi(arg_val);
1772 if(!strcmp(arg_name,
"sim_pt_based_sampling")){
1773 sim_pt_based_sampling = atoi(arg_val);
1777 if(!strcmp(arg_name,
"iso_pt_based_sampling")){
1778 iso_pt_based_sampling = atoi(arg_val);
1782 if(!strcmp(arg_name,
"sl3_normalized_init")){
1783 sl3_normalized_init = atoi(arg_val);
1786 if(!strcmp(arg_name,
"sl3_iterative_sample_mean")){
1787 sl3_iterative_sample_mean = atoi(arg_val);
1790 if(!strcmp(arg_name,
"sl3_sample_mean_max_iters")){
1791 sl3_sample_mean_max_iters = atoi(arg_val);
1794 if(!strcmp(arg_name,
"sl3_sample_mean_eps")){
1795 sl3_sample_mean_eps = atof(arg_val);
1798 if(!strcmp(arg_name,
"sl3_debug_mode")){
1799 sl3_debug_mode = atoi(arg_val);
1803 if(!strcmp(arg_name,
"cbh_normalized_init")){
1804 cbh_normalized_init = atoi(arg_val);
1807 if(!strcmp(arg_name,
"cbh_grad_eps")){
1808 cbh_grad_eps = atof(arg_val);
1812 if(!strcmp(arg_name,
"spl_control_size")){
1813 spl_control_size = atoi(arg_val);
1816 if(!strcmp(arg_name,
"spl_control_overlap")){
1817 spl_control_overlap = atof(arg_val);
1820 if(!strcmp(arg_name,
"spl_interp_type")){
1821 spl_interp_type = atoi(arg_val);
1824 if(!strcmp(arg_name,
"spl_static_wts")){
1825 spl_static_wts = atoi(arg_val);
1828 if(!strcmp(arg_name,
"spl_debug_mode")){
1829 spl_debug_mode = atoi(arg_val);
1833 if(!strcmp(arg_name,
"scv_hist_type")){
1834 scv_hist_type = atoi(arg_val);
1837 if(!strcmp(arg_name,
"scv_use_bspl")){
1838 scv_use_bspl = atoi(arg_val);
1841 if(!strcmp(arg_name,
"scv_n_bins")){
1842 scv_n_bins = atoi(arg_val);
1845 if(!strcmp(arg_name,
"scv_preseed")){
1846 scv_preseed = atof(arg_val);
1849 if(!strcmp(arg_name,
"scv_pou")){
1850 scv_pou = atoi(arg_val);
1853 if(!strcmp(arg_name,
"scv_weighted_mapping")){
1854 scv_weighted_mapping = atoi(arg_val);
1857 if(!strcmp(arg_name,
"scv_mapped_gradient")){
1858 scv_mapped_gradient = atoi(arg_val);
1861 if(!strcmp(arg_name,
"scv_affine_mapping")){
1862 scv_affine_mapping = atoi(arg_val);
1865 if(!strcmp(arg_name,
"scv_once_per_frame")){
1866 scv_once_per_frame = atoi(arg_val);
1869 if(!strcmp(arg_name,
"scv_approx_dist_feat")){
1870 scv_approx_dist_feat = atoi(arg_val);
1873 if(!strcmp(arg_name,
"scv_likelihood_alpha")){
1874 scv_likelihood_alpha = atof(arg_val);
1878 if(!strcmp(arg_name,
"lscv_sub_regions")){
1879 lscv_sub_regions = atoi(arg_val);
1882 if(!strcmp(arg_name,
"lscv_spacing")){
1883 lscv_spacing = atoi(arg_val);
1886 if(!strcmp(arg_name,
"lscv_show_subregions")){
1887 lscv_show_subregions = atoi(arg_val);
1891 if(!strcmp(arg_name,
"lkld_pre_seed")){
1892 lkld_pre_seed = atof(arg_val);
1895 if(!strcmp(arg_name,
"lkld_pou")){
1896 lkld_pou = atoi(arg_val);
1899 if(!strcmp(arg_name,
"lkld_n_bins")){
1900 lkld_n_bins = atoi(arg_val);
1903 if(!strcmp(arg_name,
"lkld_sub_regions")){
1904 lkld_sub_regions = atoi(arg_val);
1907 if(!strcmp(arg_name,
"lkld_spacing")){
1908 lkld_spacing = atoi(arg_val);
1912 if(!strcmp(arg_name,
"ncc_fast_hess")){
1913 ncc_fast_hess = atoi(arg_val);
1916 if(!strcmp(arg_name,
"ncc_likelihood_alpha")){
1917 ncc_likelihood_alpha = atof(arg_val);
1921 if(!strcmp(arg_name,
"spss_k")){
1922 spss_k = atof(arg_val);
1925 if(!strcmp(arg_name,
"spss_likelihood_alpha")){
1926 spss_likelihood_alpha = atof(arg_val);
1930 if(!strcmp(arg_name,
"ssim_pix_proc_type")){
1931 ssim_pix_proc_type = atoi(arg_val);
1934 if(!strcmp(arg_name,
"ssim_k1")){
1935 ssim_k1 = atof(arg_val);
1938 if(!strcmp(arg_name,
"ssim_k2")){
1939 ssim_k2 = atof(arg_val);
1942 if(!strcmp(arg_name,
"ssim_likelihood_alpha")){
1943 ssim_likelihood_alpha = atof(arg_val);
1947 if(!strcmp(arg_name,
"sum_am1")){
1948 sum_am1 = std::string(arg_val);
1951 if(!strcmp(arg_name,
"sum_am2")){
1952 sum_am2 = std::string(arg_val);
1956 if(!strcmp(arg_name,
"sec_ord_hess")){
1957 sec_ord_hess = atoi(arg_val);
1960 if(!strcmp(arg_name,
"leven_marq")){
1961 leven_marq = atoi(arg_val);
1964 if(!strcmp(arg_name,
"lm_delta_init")){
1965 lm_delta_init = atof(arg_val);
1968 if(!strcmp(arg_name,
"lm_delta_update")){
1969 lm_delta_update = atof(arg_val);
1973 if(!strcmp(arg_name,
"enable_learning")){
1974 enable_learning = atof(arg_val);
1977 if(!strcmp(arg_name,
"learning_rate")){
1978 learning_rate = atof(arg_val);
1982 if(!strcmp(arg_name,
"esm_hess_type")){
1983 esm_hess_type = atoi(arg_val);
1986 if(!strcmp(arg_name,
"esm_jac_type")){
1987 esm_jac_type = atoi(arg_val);
1990 if(!strcmp(arg_name,
"esm_chained_warp")){
1991 esm_chained_warp = atoi(arg_val);
1995 if(!strcmp(arg_name,
"mi_pre_seed")){
1996 mi_pre_seed = atof(arg_val);
1999 if(!strcmp(arg_name,
"mi_pou")){
2000 mi_pou = atoi(arg_val);
2003 if(!strcmp(arg_name,
"mi_n_bins")){
2004 mi_n_bins = atoi(arg_val);
2007 if(!strcmp(arg_name,
"mi_likelihood_alpha")){
2008 mi_likelihood_alpha = atof(arg_val);
2012 if(!strcmp(arg_name,
"ccre_pre_seed")){
2013 ccre_pre_seed = atof(arg_val);
2016 if(!strcmp(arg_name,
"ccre_pou")){
2017 ccre_pou = atoi(arg_val);
2020 if(!strcmp(arg_name,
"ccre_n_bins")){
2021 ccre_n_bins = atoi(arg_val);
2024 if(!strcmp(arg_name,
"ccre_symmetrical_grad")){
2025 ccre_symmetrical_grad = atoi(arg_val);
2028 if(!strcmp(arg_name,
"ccre_n_blocks")){
2029 ccre_n_blocks = atoi(arg_val);
2032 if(!strcmp(arg_name,
"ccre_likelihood_alpha")){
2033 ccre_likelihood_alpha = atof(arg_val);
2037 if(!strcmp(arg_name,
"ngf_eta")){
2038 ngf_eta = atof(arg_val);
2041 if(!strcmp(arg_name,
"ngf_use_ssd")){
2042 ngf_use_ssd = atoi(arg_val);
2046 if(!strcmp(arg_name,
"diag_am")){
2047 processStringParam(diag_am, arg_val);
2050 if(!strcmp(arg_name,
"diag_ssm")){
2051 processStringParam(diag_ssm, arg_val);
2054 if(!strcmp(arg_name,
"diag_ilm")){
2055 processStringParam(diag_ilm, arg_val);
2058 if(!strcmp(arg_name,
"diag_range")){
2059 diag_range = atof(arg_val);
2062 if(!strcmp(arg_name,
"diag_ssm_range")){
2063 diag_ssm_range = atof_arr(arg_val);
2066 if(!strcmp(arg_name,
"diag_ssm_range_id")){
2067 diag_ssm_range_id = atoi(arg_val);
2070 if(!strcmp(arg_name,
"diag_am_range_id")){
2071 diag_am_range_id = atoi(arg_val);
2074 if(!strcmp(arg_name,
"diag_res")){
2075 diag_res = atoi(arg_val);
2078 if(!strcmp(arg_name,
"diag_3d")){
2079 diag_3d = atoi(arg_val);
2082 if(!strcmp(arg_name,
"diag_3d_ids")){
2083 diag_3d_ids = atoi_arr(arg_val);
2086 if(!strcmp(arg_name,
"diag_update_type")){
2087 diag_update_type = atoi(arg_val);
2090 if(!strcmp(arg_name,
"diag_start_id")){
2091 diag_start_id = atoi(arg_val);
2094 if(!strcmp(arg_name,
"diag_end_id")){
2095 diag_end_id = atoi(arg_val);
2098 if(!strcmp(arg_name,
"diag_grad_diff")){
2099 diag_grad_diff = atof(arg_val);
2102 if(!strcmp(arg_name,
"diag_gen_norm")){
2103 diag_gen_norm = std::string(arg_val);
2106 if(!strcmp(arg_name,
"diag_gen_jac")){
2107 diag_gen_jac = std::string(arg_val);
2110 if(!strcmp(arg_name,
"diag_gen_hess")){
2111 diag_gen_hess = std::string(arg_val);
2114 if(!strcmp(arg_name,
"diag_gen_hess2")){
2115 diag_gen_hess2 = std::string(arg_val);
2118 if(!strcmp(arg_name,
"diag_gen_hess_sum")){
2119 diag_gen_hess_sum = std::string(arg_val);
2122 if(!strcmp(arg_name,
"diag_gen_num")){
2123 diag_gen_num = std::string(arg_val);
2126 if(!strcmp(arg_name,
"diag_gen_ssm")){
2127 diag_gen_ssm = std::string(arg_val);
2130 if(!strcmp(arg_name,
"diag_bin")){
2131 diag_bin = atoi(arg_val);
2134 if(!strcmp(arg_name,
"diag_inv")){
2135 diag_inv = atoi(arg_val);
2138 if(!strcmp(arg_name,
"diag_frame_gap")){
2139 diag_frame_gap = atoi(arg_val);
2142 if(!strcmp(arg_name,
"diag_show_data")){
2143 diag_show_data = atoi(arg_val);
2146 if(!strcmp(arg_name,
"diag_show_corners")){
2147 diag_show_corners = atoi(arg_val);
2150 if(!strcmp(arg_name,
"diag_show_patches")){
2151 diag_show_patches = atoi(arg_val);
2154 if(!strcmp(arg_name,
"diag_verbose")){
2155 diag_verbose = atoi(arg_val);
2158 if(!strcmp(arg_name,
"diag_enable_validation")){
2159 diag_enable_validation = atoi(arg_val);
2162 if(!strcmp(arg_name,
"diag_validation_prec")){
2163 diag_validation_prec = atof(arg_val);
2166 if(!strcmp(arg_name,
"diag_out_prefix")){
2167 diag_out_prefix = std::string(arg_val);
2171 if(!strcmp(arg_name,
"esm_spi_enable")){
2172 esm_spi_enable = atoi(arg_val);
2175 if(!strcmp(arg_name,
"esm_spi_thresh")){
2176 esm_spi_thresh = atof(arg_val);
2180 if(!strcmp(arg_name,
"pix_mapper")){
2181 processStringParam(pix_mapper, arg_val);;
2185 if(!strcmp(arg_name,
"nn_max_iters")){
2186 nn_max_iters = atoi(arg_val);
2189 if(!strcmp(arg_name,
"nn_n_samples")){
2190 nn_n_samples = atoi(arg_val);
2193 if(!strcmp(arg_name,
"nn_ssm_sigma_prec")){
2194 nn_ssm_sigma_prec = atof(arg_val);
2197 if(!strcmp(arg_name,
"nn_additive_update")){
2198 nn_additive_update = atoi(arg_val);
2201 if(!strcmp(arg_name,
"nn_show_samples")){
2202 nn_show_samples = atoi(arg_val);
2205 if(!strcmp(arg_name,
"nn_add_samples_gap")){
2206 nn_add_samples_gap = atoi(arg_val);
2209 if(!strcmp(arg_name,
"nn_n_samples_to_add")){
2210 nn_n_samples_to_add = atoi(arg_val);
2213 if(!strcmp(arg_name,
"nn_remove_samples")){
2214 nn_remove_samples = atoi(arg_val);
2217 if(!strcmp(arg_name,
"nn_ssm_sigma_ids")){
2218 nn_ssm_sigma_ids = atoi_arr(arg_val);
2221 if(!strcmp(arg_name,
"nn_ssm_mean_ids")){
2222 nn_ssm_mean_ids = atoi_arr(arg_val);
2225 if(!strcmp(arg_name,
"nn_corner_sigma_d")){
2226 nn_corner_sigma_d = atof(arg_val);
2229 if(!strcmp(arg_name,
"nn_corner_sigma_t")){
2230 nn_corner_sigma_t = atof(arg_val);
2233 if(!strcmp(arg_name,
"nn_pix_sigma")){
2234 nn_pix_sigma = atof_arr(arg_val);
2237 if(!strcmp(arg_name,
"nn_n_trees")){
2238 nn_n_trees = atoi(arg_val);
2241 if(!strcmp(arg_name,
"nn_index_type")){
2242 nn_index_type = atoi(arg_val);
2245 if(!strcmp(arg_name,
"nn_search_type")){
2246 nn_search_type = atoi(arg_val);
2249 if(!strcmp(arg_name,
"nn_save_index")){
2250 nn_save_index = atoi(arg_val);
2253 if(!strcmp(arg_name,
"nn_load_index")){
2254 nn_load_index = atoi(arg_val);
2257 if(!strcmp(arg_name,
"nn_saved_index_fid")){
2258 nn_saved_index_fid = atoi(arg_val);
2262 if(!strcmp(arg_name,
"nn_srch_checks")){
2263 nn_srch_checks = atoi(arg_val);
2266 if(!strcmp(arg_name,
"nn_srch_eps")){
2267 nn_srch_eps = atof32(arg_val);
2270 if(!strcmp(arg_name,
"nn_srch_sorted")){
2271 nn_srch_sorted = atoi(arg_val);
2274 if(!strcmp(arg_name,
"nn_srch_max_neighbors")){
2275 nn_srch_max_neighbors = atoi(arg_val);
2278 if(!strcmp(arg_name,
"nn_srch_cores")){
2279 nn_srch_cores = atoi(arg_val);
2282 if(!strcmp(arg_name,
"nn_srch_matrices_in_gpu_ram")){
2283 nn_srch_matrices_in_gpu_ram = atoi(arg_val);
2286 if(!strcmp(arg_name,
"nn_srch_use_heap")){
2287 nn_srch_use_heap = atoi(arg_val);
2290 if(!strcmp(arg_name,
"nn_gnn_degree")){
2291 nn_gnn_degree = atoi(arg_val);
2294 if(!strcmp(arg_name,
"nn_gnn_max_steps")){
2295 nn_gnn_max_steps = atoi(arg_val);
2298 if(!strcmp(arg_name,
"nn_gnn_cmpt_dist_thresh")){
2299 nn_gnn_cmpt_dist_thresh = atoi(arg_val);
2302 if(!strcmp(arg_name,
"nn_gnn_random_start")){
2303 nn_gnn_random_start = atoi(arg_val);
2306 if(!strcmp(arg_name,
"nn_fgnn_index_type")){
2307 nn_fgnn_index_type = atoi(arg_val);
2310 if(!strcmp(arg_name,
"nn_gnn_verbose")){
2311 nn_gnn_verbose = atoi(arg_val);
2314 if(!strcmp(arg_name,
"nn_kdt_trees")){
2315 nn_kdt_trees = atoi(arg_val);
2318 if(!strcmp(arg_name,
"nn_km_branching")){
2319 nn_km_branching = atoi(arg_val);
2322 if(!strcmp(arg_name,
"nn_km_iterations")){
2323 nn_km_iterations = atoi(arg_val);
2326 if(!strcmp(arg_name,
"nn_km_centers_init")){
2327 nn_km_centers_init = atoi(arg_val);
2330 if(!strcmp(arg_name,
"nn_km_cb_index")){
2331 nn_km_cb_index = atof32(arg_val);
2334 if(!strcmp(arg_name,
"nn_kdts_leaf_max_size")){
2335 nn_kdts_leaf_max_size = atoi(arg_val);
2338 if(!strcmp(arg_name,
"nn_kdtc_leaf_max_size")){
2339 nn_kdtc_leaf_max_size = atoi(arg_val);
2342 if(!strcmp(arg_name,
"nn_hc_branching")){
2343 nn_hc_branching = atoi(arg_val);
2346 if(!strcmp(arg_name,
"nn_hc_centers_init")){
2347 nn_hc_centers_init = atoi(arg_val);
2350 if(!strcmp(arg_name,
"nn_hc_trees")){
2351 nn_hc_trees = atoi(arg_val);
2354 if(!strcmp(arg_name,
"nn_hc_leaf_max_size")){
2355 nn_hc_leaf_max_size = atoi(arg_val);
2358 if(!strcmp(arg_name,
"nn_auto_target_precision")){
2359 nn_auto_target_precision = atof32(arg_val);
2362 if(!strcmp(arg_name,
"ann_uto_build_weight")){
2363 nn_auto_build_weight = atof32(arg_val);
2366 if(!strcmp(arg_name,
"nn_auto_memory_weight")){
2367 nn_auto_memory_weight = atof32(arg_val);
2370 if(!strcmp(arg_name,
"nn_auto_sample_fraction")){
2371 nn_auto_sample_fraction = atof32(arg_val);
2374 if(!strcmp(arg_name,
"nnk_n_layers")){
2375 nnk_n_layers = atoi(arg_val);
2378 if(!strcmp(arg_name,
"nnk_ssm_sigma_ids")){
2379 nnk_ssm_sigma_ids.push_back(atoi_arr(arg_val));
2383 if(!strcmp(arg_name,
"rg_max_iters")){
2384 rg_max_iters = atoi(arg_val);
2387 if(!strcmp(arg_name,
"rg_n_samples")){
2388 rg_n_samples = atoi(arg_val);
2391 if(!strcmp(arg_name,
"rg_additive_update")){
2392 rg_additive_update = atoi(arg_val);
2395 if(!strcmp(arg_name,
"rg_show_samples")){
2396 rg_show_samples = atoi(arg_val);
2399 if(!strcmp(arg_name,
"rg_add_points")){
2400 rg_add_points = atoi(arg_val);
2403 if(!strcmp(arg_name,
"rg_remove_points")){
2404 rg_remove_points = atoi(arg_val);
2407 if(!strcmp(arg_name,
"rg_ssm_sigma_ids")){
2408 rg_ssm_sigma_ids = atoi_arr(arg_val);
2411 if(!strcmp(arg_name,
"rg_ssm_mean_ids")){
2412 rg_ssm_mean_ids = atoi_arr(arg_val);
2415 if(!strcmp(arg_name,
"rg_pix_sigma")){
2416 rg_pix_sigma = atof_arr(arg_val);
2419 if(!strcmp(arg_name,
"rg_save_index")){
2420 rg_save_index = atoi(arg_val);
2423 if(!strcmp(arg_name,
"rg_load_index")){
2424 rg_load_index = atoi(arg_val);
2427 if(!strcmp(arg_name,
"rg_saved_index_fid")){
2428 rg_saved_index_fid = atoi(arg_val);
2431 if(!strcmp(arg_name,
"rg_nepochs")){
2432 rg_nepochs = atoi(arg_val);
2435 if(!strcmp(arg_name,
"rg_bs")){
2436 rg_bs = atoi(arg_val);
2439 if(!strcmp(arg_name,
"rg_preproc")){
2440 rg_preproc = atoi(arg_val);
2443 if(!strcmp(arg_name,
"rg_solver")){
2444 processStringParam(rg_solver, arg_val);;
2447 if(!strcmp(arg_name,
"rg_train")){
2448 processStringParam(rg_train, arg_val);;
2451 if(!strcmp(arg_name,
"rg_mean")){
2452 processStringParam(rg_mean, arg_val);;
2455 if(!strcmp(arg_name,
"rg_dbg")){
2456 rg_dbg = atoi(arg_val);
2459 if(!strcmp(arg_name,
"rg_pretrained")){
2460 rg_pretrained = atoi(arg_val);
2465 if(!strcmp(arg_name,
"riu_likelihood_alpha")){
2466 riu_likelihood_alpha = atof(arg_val);
2470 if(!strcmp(arg_name,
"hrch_sm")){
2471 processStringParam(hrch_sm, arg_val);
2474 if(!strcmp(arg_name,
"hrch_am")){
2475 processStringParam(hrch_am, arg_val);
2479 if(!strcmp(arg_name,
"casc_n_trackers")){
2480 casc_n_trackers = atoi(arg_val);
2483 if(!strcmp(arg_name,
"casc_enable_feedback")){
2484 casc_enable_feedback = atoi(arg_val);
2487 if(!strcmp(arg_name,
"casc_auto_reinit")) {
2488 casc_auto_reinit = atoi(arg_val);
2491 if(!strcmp(arg_name,
"casc_reinit_err_thresh")) {
2492 casc_reinit_err_thresh = atof(arg_val);
2495 if(!strcmp(arg_name,
"casc_reinit_frame_gap")) {
2496 casc_reinit_frame_gap = atoi(arg_val);
2500 if(!strcmp(arg_name,
"grid_sm")){
2501 processStringParam(grid_sm, arg_val);
2504 if(!strcmp(arg_name,
"grid_am")){
2505 processStringParam(grid_am, arg_val);
2508 if(!strcmp(arg_name,
"grid_ssm")){
2509 processStringParam(grid_ssm, arg_val);
2512 if(!strcmp(arg_name,
"grid_ilm")){
2513 processStringParam(grid_ilm, arg_val);
2516 if(!strcmp(arg_name,
"grid_res")){
2517 grid_res = atoi(arg_val);
2520 if(!strcmp(arg_name,
"grid_patch_size")){
2521 grid_patch_size = atoi(arg_val);
2524 if(!strcmp(arg_name,
"grid_patch_res")){
2525 grid_patch_res = atoi(arg_val);
2528 if(!strcmp(arg_name,
"grid_reset_at_each_frame")){
2529 grid_reset_at_each_frame = atoi(arg_val);
2532 if(!strcmp(arg_name,
"grid_dyn_patch_size")){
2533 grid_dyn_patch_size = atoi(arg_val);
2536 if(!strcmp(arg_name,
"grid_patch_centroid_inside")){
2537 grid_patch_centroid_inside = atoi(arg_val);
2540 if(!strcmp(arg_name,
"grid_show_trackers")){
2541 grid_show_trackers = atoi(arg_val);
2544 if(!strcmp(arg_name,
"grid_show_tracker_edges")){
2545 grid_show_tracker_edges = atoi(arg_val);
2548 if(!strcmp(arg_name,
"grid_use_tbb")){
2549 grid_use_tbb = atoi(arg_val);
2552 if(!strcmp(arg_name,
"grid_pyramid_levels")){
2553 grid_pyramid_levels = atoi(arg_val);
2556 if(!strcmp(arg_name,
"grid_use_min_eig_vals")){
2557 grid_use_min_eig_vals = atoi(arg_val);
2560 if(!strcmp(arg_name,
"grid_rgb_input")){
2561 grid_rgb_input = atoi(arg_val);
2564 if(!strcmp(arg_name,
"grid_min_eig_thresh")){
2565 grid_min_eig_thresh = atof(arg_val);
2568 if(!strcmp(arg_name,
"grid_fb_err_thresh")){
2569 grid_fb_err_thresh = atof(arg_val);
2572 if(!strcmp(arg_name,
"grid_fb_reinit")){
2573 grid_fb_reinit = atoi(arg_val);
2576 if(!strcmp(arg_name,
"grid_use_const_grad")){
2577 grid_use_const_grad = atoi(arg_val);
2581 if(!strcmp(arg_name,
"feat_detector_type")){
2582 feat_detector_type = std::string(arg_val);
2585 if(!strcmp(arg_name,
"feat_descriptor_type")){
2586 feat_descriptor_type = std::string(arg_val);
2589 if(!strcmp(arg_name,
"feat_max_dist_ratio")){
2590 feat_max_dist_ratio = atof(arg_val);
2592 }
if(!strcmp(arg_name,
"feat_min_matches")){
2593 feat_min_matches = atoi(arg_val);
2596 if(!strcmp(arg_name,
"feat_rebuild_index")){
2597 feat_rebuild_index = atoi(arg_val);
2600 if(!strcmp(arg_name,
"feat_use_cv_flann")){
2601 feat_use_cv_flann = atoi(arg_val);
2603 }
if(!strcmp(arg_name,
"feat_show_keypoints")){
2604 feat_show_keypoints = atoi(arg_val);
2606 }
if(!strcmp(arg_name,
"feat_show_matches")){
2607 feat_show_matches = atoi(arg_val);
2609 }
if(!strcmp(arg_name,
"feat_debug_mode")){
2610 feat_debug_mode = atoi(arg_val);
2615 if(!strcmp(arg_name,
"sift_n_features")){
2616 sift_n_features = atoi(arg_val);
2619 if(!strcmp(arg_name,
"sift_n_octave_layers")){
2620 sift_n_octave_layers = atoi(arg_val);
2623 if(!strcmp(arg_name,
"sift_edge_thresh")){
2624 sift_edge_thresh = atof(arg_val);
2627 if(!strcmp(arg_name,
"sift_contrast_thresh")){
2628 sift_contrast_thresh = atof(arg_val);
2631 if(!strcmp(arg_name,
"sift_sigma")){
2632 sift_sigma = atof(arg_val);
2636 if(!strcmp(arg_name,
"surf_hessian_threshold")){
2637 surf_hessian_threshold = atof(arg_val);
2640 if(!strcmp(arg_name,
"surf_n_octaves")){
2641 surf_n_octaves = atoi(arg_val);
2644 if(!strcmp(arg_name,
"surf_n_octave_layers")){
2645 surf_n_octave_layers = atoi(arg_val);
2648 if(!strcmp(arg_name,
"surf_extended")){
2649 surf_extended = atoi(arg_val);
2652 if(!strcmp(arg_name,
"surf_upright")){
2653 surf_upright = atoi(arg_val);
2657 if(!strcmp(arg_name,
"fast_non_max_suppression")){
2658 fast_non_max_suppression = atoi(arg_val);
2661 if(!strcmp(arg_name,
"fast_threshold")){
2662 fast_threshold = atoi(arg_val);
2665 if(!strcmp(arg_name,
"fast_type")){
2666 fast_type = atoi(arg_val);
2670 if(!strcmp(arg_name,
"brisk_thresh")){
2671 brisk_thresh = atoi(arg_val);
2674 if(!strcmp(arg_name,
"brisk_octaves")){
2675 brisk_octaves = atoi(arg_val);
2678 if(!strcmp(arg_name,
"brisk_pattern_scale")){
2679 brisk_pattern_scale = atof32(arg_val);
2683 if(!strcmp(arg_name,
"mser_delta")){
2684 mser_delta = atoi(arg_val);
2687 if(!strcmp(arg_name,
"mser_min_area")){
2688 mser_min_area = atoi(arg_val);
2691 if(!strcmp(arg_name,
"mser_max_area")){
2692 mser_max_area = atoi(arg_val);
2695 if(!strcmp(arg_name,
"mser_max_evolution")){
2696 mser_max_evolution = atoi(arg_val);
2699 if(!strcmp(arg_name,
"mser_edge_blur_size")){
2700 mser_edge_blur_size = atoi(arg_val);
2703 if(!strcmp(arg_name,
"mser_max_variation")){
2704 mser_max_variation = atof(arg_val);
2707 if(!strcmp(arg_name,
"mser_min_diversity")){
2708 mser_min_diversity = atof(arg_val);
2711 if(!strcmp(arg_name,
"mser_area_threshold")){
2712 mser_area_threshold = atof(arg_val);
2715 if(!strcmp(arg_name,
"mser_min_margin")){
2716 mser_min_margin = atof(arg_val);
2720 if(!strcmp(arg_name,
"orb_n_features")){
2721 orb_n_features = atoi(arg_val);
2724 if(!strcmp(arg_name,
"orb_scale_factor")){
2725 orb_scale_factor = atof32(arg_val);
2728 if(!strcmp(arg_name,
"orb_n_levels")){
2729 orb_n_levels = atoi(arg_val);
2732 if(!strcmp(arg_name,
"orb_edge_threshold")){
2733 orb_edge_threshold = atoi(arg_val);
2736 if(!strcmp(arg_name,
"orb_first_level")){
2737 orb_first_level = atoi(arg_val);
2740 if(!strcmp(arg_name,
"orb_WTA_K")){
2741 orb_WTA_K = atoi(arg_val);
2744 if(!strcmp(arg_name,
"orb_score_type")){
2745 orb_score_type = atoi(arg_val);
2748 if(!strcmp(arg_name,
"orb_patch_size")){
2749 orb_patch_size = atoi(arg_val);
2752 if(!strcmp(arg_name,
"orb_fast_threshold")){
2753 orb_fast_threshold = atoi(arg_val);
2757 if(!strcmp(arg_name,
"agast_non_max_suppression")){
2758 agast_non_max_suppression = atoi(arg_val);
2761 if(!strcmp(arg_name,
"agast_threshold")){
2762 agast_threshold = atoi(arg_val);
2765 if(!strcmp(arg_name,
"agast_type")){
2766 agast_type = atoi(arg_val);
2770 if(!strcmp(arg_name,
"gftt_max_corners")){
2771 gftt_max_corners = atoi(arg_val);
2774 if(!strcmp(arg_name,
"gftt_quality_level")){
2775 gftt_quality_level = atof(arg_val);
2778 if(!strcmp(arg_name,
"gftt_min_distance")){
2779 gftt_min_distance = atof(arg_val);
2782 if(!strcmp(arg_name,
"gftt_block_size")){
2783 gftt_block_size = atoi(arg_val);
2786 if(!strcmp(arg_name,
"gftt_use_harris_detector")){
2787 gftt_use_harris_detector = atoi(arg_val);
2790 if(!strcmp(arg_name,
"gftt_k")){
2791 gftt_k = atof(arg_val);
2795 if(!strcmp(arg_name,
"brief_bytes")){
2796 brief_bytes = atoi(arg_val);
2799 if(!strcmp(arg_name,
"brief_use_orientation")){
2800 brief_use_orientation = atoi(arg_val);
2804 if(!strcmp(arg_name,
"freak_orientation_normalized")){
2805 freak_orientation_normalized = atoi(arg_val);
2808 if(!strcmp(arg_name,
"freak_scale_normalized")){
2809 freak_scale_normalized = atoi(arg_val);
2812 if(!strcmp(arg_name,
"freak_pattern_scale")){
2813 freak_pattern_scale = atof32(arg_val);
2816 if(!strcmp(arg_name,
"freak_n_octaves")){
2817 freak_n_octaves = atoi(arg_val);
2821 if(!strcmp(arg_name,
"lucid_kernel")){
2822 lucid_kernel = atoi(arg_val);
2825 if(!strcmp(arg_name,
"lucid_blur_kernel")){
2826 lucid_blur_kernel = atoi(arg_val);
2830 if(!strcmp(arg_name,
"latch_bytes")){
2831 latch_bytes = atoi(arg_val);
2834 if(!strcmp(arg_name,
"latch_rotation_invariance")){
2835 latch_rotation_invariance = atoi(arg_val);
2838 if(!strcmp(arg_name,
"latch_half_ssd_size")){
2839 latch_half_ssd_size = atoi(arg_val);
2843 if(!strcmp(arg_name,
"daisy_radius")){
2844 daisy_radius = atof32(arg_val);
2847 if(!strcmp(arg_name,
"daisy_q_radius")){
2848 daisy_q_radius = atoi(arg_val);
2851 if(!strcmp(arg_name,
"daisy_q_theta")){
2852 daisy_q_theta = atoi(arg_val);
2855 if(!strcmp(arg_name,
"daisy_q_hist")){
2856 daisy_q_hist = atoi(arg_val);
2859 if(!strcmp(arg_name,
"daisy_H")){
2860 daisy_H = atof32_arr(arg_val);
2863 if(!strcmp(arg_name,
"daisy_interpolation")){
2864 daisy_interpolation = atoi(arg_val);
2867 if(!strcmp(arg_name,
"daisy_use_orientation")){
2868 daisy_use_orientation = atoi(arg_val);
2872 if(!strcmp(arg_name,
"vgg_desc")){
2873 vgg_desc = atoi(arg_val);
2876 if(!strcmp(arg_name,
"vgg_isigma")){
2877 vgg_isigma = atof32(arg_val);
2880 if(!strcmp(arg_name,
"vgg_img_normalize")){
2881 vgg_img_normalize = atoi(arg_val);
2884 if(!strcmp(arg_name,
"vgg_use_scale_orientation")){
2885 vgg_use_scale_orientation = atoi(arg_val);
2888 if(!strcmp(arg_name,
"vgg_scale_factor")){
2889 vgg_scale_factor = atof32(arg_val);
2892 if(!strcmp(arg_name,
"vgg_dsc_normalize")){
2893 vgg_dsc_normalize = atoi(arg_val);
2897 if(!strcmp(arg_name,
"boost_desc_desc")){
2898 boost_desc_desc = atoi(arg_val);
2901 if(!strcmp(arg_name,
"boost_desc_use_scale_orientation")){
2902 boost_desc_use_scale_orientation = atoi(arg_val);
2905 if(!strcmp(arg_name,
"boost_desc_scale_factor")){
2906 boost_desc_scale_factor = atof32(arg_val);
2910 if(!strcmp(arg_name,
"star_max_size")){
2911 star_max_size = atoi(arg_val);
2914 if(!strcmp(arg_name,
"star_response_threshold")){
2915 star_response_threshold = atoi(arg_val);
2918 if(!strcmp(arg_name,
"star_line_threshold_projected")){
2919 star_line_threshold_projected = atoi(arg_val);
2922 if(!strcmp(arg_name,
"star_line_threshold_binarized")){
2923 star_line_threshold_binarized = atoi(arg_val);
2926 if(!strcmp(arg_name,
"star_suppress_nonmax_size")){
2927 star_suppress_nonmax_size = atoi(arg_val);
2931 if(!strcmp(arg_name,
"msd_patch_radius")){
2932 msd_patch_radius = atoi(arg_val);
2935 if(!strcmp(arg_name,
"msd_search_area_radius")){
2936 msd_search_area_radius = atoi(arg_val);
2939 if(!strcmp(arg_name,
"msd_nms_radius")){
2940 msd_nms_radius = atoi(arg_val);
2943 if(!strcmp(arg_name,
"msd_nms_scale_radius")){
2944 msd_nms_scale_radius = atoi(arg_val);
2947 if(!strcmp(arg_name,
"msd_th_saliency")){
2948 msd_th_saliency = atof32(arg_val);
2951 if(!strcmp(arg_name,
"msd_kNN")){
2952 msd_kNN = atoi(arg_val);
2955 if(!strcmp(arg_name,
"msd_scale_factor")){
2956 msd_scale_factor = atof32(arg_val);
2959 if(!strcmp(arg_name,
"msd_n_scales")){
2960 msd_n_scales = atoi(arg_val);
2963 if(!strcmp(arg_name,
"msd_compute_orientation")){
2964 msd_compute_orientation = atoi(arg_val);
2969 if(!strcmp(arg_name,
"est_method")){
2970 est_method = atoi(arg_val);
2973 if(!strcmp(arg_name,
"est_ransac_reproj_thresh")){
2974 est_ransac_reproj_thresh = atof(arg_val);
2977 if(!strcmp(arg_name,
"est_n_model_pts")){
2978 est_n_model_pts = atoi(arg_val);
2981 if(!strcmp(arg_name,
"est_max_iters")){
2982 est_max_iters = atoi(arg_val);
2985 if(!strcmp(arg_name,
"est_max_subset_attempts")){
2986 est_max_subset_attempts = atoi(arg_val);
2989 if(!strcmp(arg_name,
"est_use_boost_rng")){
2990 est_use_boost_rng = atoi(arg_val);
2993 if(!strcmp(arg_name,
"est_confidence")){
2994 est_confidence = atof(arg_val);
2997 if(!strcmp(arg_name,
"est_refine")){
2998 est_refine = atoi(arg_val);
3001 if(!strcmp(arg_name,
"est_lm_max_iters")){
3002 est_lm_max_iters = atoi(arg_val);
3006 if(!strcmp(arg_name,
"rkl_sm")){
3007 processStringParam(rkl_sm, arg_val);
3010 if(!strcmp(arg_name,
"rkl_enable_spi")){
3011 rkl_enable_spi = atoi(arg_val);
3014 if(!strcmp(arg_name,
"rkl_enable_feedback")){
3015 rkl_enable_feedback = atoi(arg_val);
3018 if(!strcmp(arg_name,
"rkl_failure_detection")){
3019 rkl_failure_detection = atoi(arg_val);
3022 if(!strcmp(arg_name,
"rkl_failure_thresh")){
3023 rkl_failure_thresh = atof(arg_val);
3027 if(!strcmp(arg_name,
"prl_n_trackers")) {
3028 prl_n_trackers = atoi(arg_val);
3031 if(!strcmp(arg_name,
"prl_estimation_method")) {
3032 prl_estimation_method = atoi(arg_val);
3035 if(!strcmp(arg_name,
"prl_reset_to_mean")) {
3036 prl_reset_to_mean = atoi(arg_val);
3039 if(!strcmp(arg_name,
"prl_auto_reinit")) {
3040 prl_auto_reinit = atoi(arg_val);
3043 if(!strcmp(arg_name,
"prl_reinit_err_thresh")) {
3044 prl_reinit_err_thresh = atof(arg_val);
3047 if(!strcmp(arg_name,
"prl_reinit_frame_gap")) {
3048 prl_reinit_frame_gap = atoi(arg_val);
3052 if(!strcmp(arg_name,
"pyr_sm")) {
3053 pyr_sm = std::string(arg_val);
3056 if(!strcmp(arg_name,
"pyr_no_of_levels")) {
3057 pyr_no_of_levels = atoi(arg_val);
3060 if(!strcmp(arg_name,
"pyr_scale_factor")) {
3061 pyr_scale_factor = atof(arg_val);
3064 if(!strcmp(arg_name,
"pyr_scale_res")) {
3065 pyr_scale_res = atoi(arg_val);
3068 if(!strcmp(arg_name,
"pyr_show_levels")) {
3069 pyr_show_levels = atoi(arg_val);
3073 if(!strcmp(arg_name,
"sd_learning_rate")){
3074 sd_learning_rate = atof(arg_val);
3078 if(!strcmp(arg_name,
"gb_additive_update")){
3079 gb_additive_update = atoi(arg_val);
3083 if(!strcmp(arg_name,
"pgb_additive_update")){
3084 pgb_additive_update = atoi(arg_val);
3087 if(!strcmp(arg_name,
"pgb_sub_regions_x")){
3088 pgb_sub_regions_x = atoi(arg_val);
3091 if(!strcmp(arg_name,
"pgb_sub_regions_y")){
3092 pgb_sub_regions_y = atoi(arg_val);
3096 if(!strcmp(arg_name,
"rbf_additive_update")){
3097 rbf_additive_update = atoi(arg_val);
3100 if(!strcmp(arg_name,
"rbf_n_ctrl_pts_x")){
3101 rbf_n_ctrl_pts_x = atoi(arg_val);
3104 if(!strcmp(arg_name,
"rbf_n_ctrl_pts_y")){
3105 rbf_n_ctrl_pts_y = atoi(arg_val);
3109 if(!strcmp(arg_name,
"pf_max_iters")){
3110 pf_max_iters = atoi(arg_val);
3113 if(!strcmp(arg_name,
"pf_n_particles")){
3114 pf_n_particles = atoi(arg_val);
3117 if(!strcmp(arg_name,
"pf_dynamic_model")){
3118 pf_dynamic_model = atoi(arg_val);
3121 if(!strcmp(arg_name,
"pf_update_type")){
3122 pf_update_type = atoi(arg_val);
3125 if(!strcmp(arg_name,
"pf_likelihood_func")){
3126 pf_likelihood_func = atoi(arg_val);
3129 if(!strcmp(arg_name,
"pf_resampling_type")){
3130 pf_resampling_type = atoi(arg_val);
3133 if(!strcmp(arg_name,
"pf_reset_to_mean")){
3134 pf_reset_to_mean = atoi(arg_val);
3137 if(!strcmp(arg_name,
"pf_mean_type")){
3138 pf_mean_type = atoi(arg_val);
3141 if(!strcmp(arg_name,
"pf_ssm_sigma_ids")){
3142 pf_ssm_sigma_ids = atoi_arr(arg_val);
3145 if(!strcmp(arg_name,
"pf_ssm_mean_ids")){
3146 pf_ssm_mean_ids = atoi_arr(arg_val);
3149 if(!strcmp(arg_name,
"pf_update_distr_wts")){
3150 pf_update_distr_wts = atoi(arg_val);
3153 if(!strcmp(arg_name,
"pf_min_distr_wt")){
3154 pf_min_distr_wt = atof(arg_val);
3157 if(!strcmp(arg_name,
"pf_adaptive_resampling_thresh")){
3158 pf_adaptive_resampling_thresh = atof(arg_val);
3161 if(!strcmp(arg_name,
"pf_measurement_sigma")){
3162 pf_measurement_sigma = atof(arg_val);
3165 if(!strcmp(arg_name,
"pf_pix_sigma")){
3166 pf_pix_sigma = atof_arr(arg_val);
3169 if(!strcmp(arg_name,
"pf_show_particles")){
3170 pf_show_particles = atoi(arg_val);
3173 if(!strcmp(arg_name,
"pf_jacobian_as_sigma")){
3174 pf_jacobian_as_sigma = atoi(arg_val);
3177 if(!strcmp(arg_name,
"pf_debug_mode")){
3178 pf_debug_mode = atoi(arg_val);
3182 if(!strcmp(arg_name,
"pfk_n_layers")){
3183 pfk_n_layers = atoi(arg_val);
3186 if(!strcmp(arg_name,
"pfk_ssm_sigma_ids")){
3187 pfk_ssm_sigma_ids.push_back(atoi_arr(arg_val));
3191 if(!strcmp(arg_name,
"ssm_sigma")){
3192 ssm_sigma.push_back(atof_arr(arg_val));
3195 if(!strcmp(arg_name,
"ssm_mean")){
3196 ssm_mean.push_back(atof_arr(arg_val));
3199 if(!strcmp(arg_name,
"am_sigma")){
3200 am_sigma.push_back(atof_arr(arg_val));
3203 if(!strcmp(arg_name,
"am_mean")){
3204 am_mean.push_back(atof_arr(arg_val));
3208 if(!strcmp(arg_name,
"cmt_estimate_scale")){
3209 cmt_estimate_scale = atoi(arg_val);
3212 if(!strcmp(arg_name,
"cmt_estimate_rotation")){
3213 cmt_estimate_rotation = atoi(arg_val);
3216 if(!strcmp(arg_name,
"cmt_feat_detector")){
3217 processStringParam(cmt_feat_detector, arg_val);
3220 if(!strcmp(arg_name,
"cmt_desc_extractor")){
3221 processStringParam(cmt_desc_extractor, arg_val);
3224 if(!strcmp(arg_name,
"cmt_resize_factor")){
3225 cmt_resize_factor = atof(arg_val);
3229 if(!strcmp(arg_name,
"dsst_sigma")){
3230 dsst_sigma = atof(arg_val);
3233 if(!strcmp(arg_name,
"dsst_scale_sigma")){
3234 dsst_scale_sigma = atof(arg_val);
3237 if(!strcmp(arg_name,
"dsst_lambda")){
3238 dsst_lambda = atof(arg_val);
3241 if(!strcmp(arg_name,
"dsst_learning_rate")){
3242 dsst_learning_rate = atof(arg_val);
3245 if(!strcmp(arg_name,
"dsst_number_scales")){
3246 dsst_number_scales = atoi(arg_val);
3249 if(!strcmp(arg_name,
"dsst_number_rots")){
3250 dsst_number_rots = atoi(arg_val);
3253 if(!strcmp(arg_name,
"dsst_scale_step")){
3254 dsst_scale_step = atof(arg_val);
3257 if(!strcmp(arg_name,
"dsst_rot_step")){
3258 dsst_rot_step = atof(arg_val);
3261 if(!strcmp(arg_name,
"dsst_padding")){
3262 dsst_padding = atoi(arg_val);
3265 if(!strcmp(arg_name,
"dsst_resize_factor")){
3266 dsst_resize_factor = atoi(arg_val);
3269 if(!strcmp(arg_name,
"dsst_is_scaling")){
3270 dsst_is_scaling = atoi(arg_val);
3273 if(!strcmp(arg_name,
"dsst_is_rotating")){
3274 dsst_is_rotating = atoi(arg_val);
3277 if(!strcmp(arg_name,
"dsst_bin_size")){
3278 dsst_bin_size = atoi(arg_val);
3282 if(!strcmp(arg_name,
"kcf_output_sigma_factor")){
3283 kcf_output_sigma_factor = atof(arg_val);
3286 if(!strcmp(arg_name,
"kcf_interp_factor")){
3287 kcf_interp_factor = atof(arg_val);
3290 if(!strcmp(arg_name,
"kcf_lambda")){
3291 kcf_lambda = atof(arg_val);
3294 if(!strcmp(arg_name,
"kcf_kernel_sigma")){
3295 kcf_kernel_sigma = atof(arg_val);
3298 if(!strcmp(arg_name,
"kcf_number_scales")){
3299 kcf_number_scales = atoi(arg_val);
3302 if(!strcmp(arg_name,
"kcf_scale_step")){
3303 kcf_scale_step = atof(arg_val);
3306 if(!strcmp(arg_name,
"kcf_padding")){
3307 kcf_padding = atoi(arg_val);
3310 if(!strcmp(arg_name,
"kcf_resize_factor")){
3311 kcf_resize_factor = atoi(arg_val);
3314 if(!strcmp(arg_name,
"kcf_scale_model_max_area")){
3315 kcf_scale_model_max_area = atof(arg_val);
3318 if(!strcmp(arg_name,
"kcf_scale_sigma_factor")){
3319 kcf_scale_sigma_factor = atof(arg_val);
3322 if(!strcmp(arg_name,
"kcf_scale_learning_rate")){
3323 kcf_scale_learning_rate = atof(arg_val);
3326 if(!strcmp(arg_name,
"kcf_is_scaling")){
3327 kcf_is_scaling = atoi(arg_val);
3331 if(!strcmp(arg_name,
"mil_algorithm")){
3332 mil_algorithm = atoi(arg_val);
3335 if(!strcmp(arg_name,
"mil_num_classifiers")){
3336 mil_num_classifiers = atoi(arg_val);
3339 if(!strcmp(arg_name,
"mil_overlap")){
3340 mil_overlap = atof32(arg_val);
3343 if(!strcmp(arg_name,
"mil_search_factor")){
3344 mil_search_factor = atof32(arg_val);
3347 if(!strcmp(arg_name,
"mil_pos_radius_train")){
3348 mil_pos_radius_train = atof32(arg_val);
3351 if(!strcmp(arg_name,
"mil_neg_num_train")){
3352 mil_neg_num_train = atoi(arg_val);
3355 if(!strcmp(arg_name,
"mil_num_features")){
3356 mil_num_features = atoi(arg_val);
3360 if(!strcmp(arg_name,
"tld_detector_enabled")){
3361 tld_detector_enabled = atoi(arg_val);
3364 if(!strcmp(arg_name,
"tld_learning_enabled")){
3365 tld_learning_enabled = atoi(arg_val);
3368 if(!strcmp(arg_name,
"tld_tracker_enabled")){
3369 tld_tracker_enabled = atoi(arg_val);
3372 if(!strcmp(arg_name,
"tld_alternating")){
3373 tld_alternating = atoi(arg_val);
3377 if(!strcmp(arg_name,
"rct_min_n_rect")){
3378 rct_min_n_rect = atoi(arg_val);
3381 if(!strcmp(arg_name,
"rct_max_n_rect")){
3382 rct_max_n_rect = atoi(arg_val);
3385 if(!strcmp(arg_name,
"rct_n_feat")){
3386 rct_n_feat = atoi(arg_val);
3389 if(!strcmp(arg_name,
"rct_rad_outer_pos")){
3390 rct_rad_outer_pos = atoi(arg_val);
3393 if(!strcmp(arg_name,
"rct_rad_search_win")){
3394 rct_rad_search_win = atoi(arg_val);
3397 if(!strcmp(arg_name,
"rct_learning_rate")){
3398 rct_learning_rate = atof(arg_val);
3402 if(!strcmp(arg_name,
"strk_config_path")){
3403 strk_config_path = std::string(arg_val);
3407 if(!strcmp(arg_name,
"vptt_sm")){
3408 processStringParam(vptt_sm, arg_val);
3411 if(!strcmp(arg_name,
"vptt_am")){
3412 processStringParam(vptt_am, arg_val);
3415 if(!strcmp(arg_name,
"vptt_ssm")){
3416 processStringParam(vptt_ssm, arg_val);
3419 if(!strcmp(arg_name,
"vptt_max_iters")){
3420 vptt_max_iters = atoi(arg_val);
3423 if(!strcmp(arg_name,
"vptt_res")){
3424 vptt_res = atoi(arg_val);
3427 if(!strcmp(arg_name,
"vptt_pyr_n_levels")){
3428 vptt_pyr_n_levels = atoi(arg_val);
3431 if(!strcmp(arg_name,
"vptt_pyr_level_to_stop")){
3432 vptt_pyr_level_to_stop = atoi(arg_val);
3435 if(!strcmp(arg_name,
"vptt_lambda")){
3436 vptt_lambda = atof(arg_val);
3439 if(!strcmp(arg_name,
"vptt_thresh_grad")){
3440 vptt_thresh_grad = atof(arg_val);
3444 if(!strcmp(arg_name,
"vp_usb_res")){
3445 vp_usb_res = std::string(arg_val);
3448 if(!strcmp(arg_name,
"vp_usb_fps")){
3449 vp_usb_fps = std::string(arg_val);
3452 if(!strcmp(arg_name,
"vp_usb_n_buffers")){
3453 vp_usb_n_buffers = atoi(arg_val);
3456 if(!strcmp(arg_name,
"vp_fw_res")){
3457 vp_fw_res = std::string(arg_val);
3460 if(!strcmp(arg_name,
"vp_fw_fps")){
3461 vp_fw_fps = std::string(arg_val);
3464 if(!strcmp(arg_name,
"vp_fw_depth")){
3465 vp_fw_depth = std::string(arg_val);
3468 if(!strcmp(arg_name,
"vp_fw_iso")){
3469 vp_fw_iso = std::string(arg_val);
3472 if(!strcmp(arg_name,
" vp_fw_print_info")){
3473 vp_fw_print_info = atoi(arg_val);
3476 if(!strcmp(arg_name,
" vp_pg_fw_shutter_ms")){
3477 vp_pg_fw_shutter_ms = atof32(arg_val);
3480 if(!strcmp(arg_name,
" vp_pg_fw_gain")){
3481 vp_pg_fw_gain = atof32(arg_val);
3484 if(!strcmp(arg_name,
" vp_pg_fw_exposure")){
3485 vp_pg_fw_exposure = atof32(arg_val);
3488 if(!strcmp(arg_name,
" vp_pg_fw_brightness")){
3489 vp_pg_fw_brightness = atof32(arg_val);
3493 if(!strcmp(arg_name,
"cv3_tracker_type")){
3494 cv3_tracker_type = std::string(arg_val);
3498 if(!strcmp(arg_name,
"pfsl3_p_x")){
3499 pfsl3_p_x = atoi(arg_val);
3502 if(!strcmp(arg_name,
"pfsl3_p_y")){
3503 pfsl3_p_y = atoi(arg_val);
3506 if(!strcmp(arg_name,
"pfsl3_rot")){
3507 pfsl3_rot = atof(arg_val);
3510 if(!strcmp(arg_name,
"pfsl3_ncc_std")){
3511 pfsl3_ncc_std = atof(arg_val);
3514 if(!strcmp(arg_name,
"pfsl3_pca_std")){
3515 pfsl3_pca_std = atof(arg_val);
3518 if(!strcmp(arg_name,
"pfsl3_state_std")){
3519 pfsl3_state_std = atof_arr(arg_val);
3522 if(!strcmp(arg_name,
"pfsl3_ar_p")){
3523 pfsl3_ar_p = atoi(arg_val);
3526 if(!strcmp(arg_name,
"pfsl3_n")){
3527 pfsl3_n = atoi(arg_val);
3530 if(!strcmp(arg_name,
"pfsl3_n_c")){
3531 pfsl3_n_c = atoi(arg_val);
3534 if(!strcmp(arg_name,
"pfsl3_n_iter")){
3535 pfsl3_n_iter = atoi(arg_val);
3538 if(!strcmp(arg_name,
"pfsl3_sampling")){
3539 pfsl3_sampling = atoi(arg_val);
3542 if(!strcmp(arg_name,
"pfsl3_capture")){
3543 pfsl3_capture = atoi(arg_val);
3546 if(!strcmp(arg_name,
"pfsl3_mean_check")){
3547 pfsl3_mean_check = atoi(arg_val);
3550 if(!strcmp(arg_name,
"pfsl3_outlier_flag")){
3551 pfsl3_outlier_flag = atoi(arg_val);
3554 if(!strcmp(arg_name,
"pfsl3_len")){
3555 pfsl3_len = atoi(arg_val);
3558 if(!strcmp(arg_name,
"pfsl3_init_size")){
3559 pfsl3_init_size = atoi(arg_val);
3562 if(!strcmp(arg_name,
"pfsl3_update_period")){
3563 pfsl3_update_period = atoi(arg_val);
3566 if(!strcmp(arg_name,
"pfsl3_ff")){
3567 pfsl3_ff = atof32(arg_val);
3570 if(!strcmp(arg_name,
"pfsl3_basis_thr")){
3571 pfsl3_basis_thr = atof(arg_val);
3574 if(!strcmp(arg_name,
"pfsl3_max_num_basis")){
3575 pfsl3_max_num_basis = atoi(arg_val);
3578 if(!strcmp(arg_name,
"pfsl3_max_num_used_basis")){
3579 pfsl3_max_num_used_basis = atoi(arg_val);
3582 if(!strcmp(arg_name,
"pfsl3_show_weights")){
3583 pfsl3_show_weights = atoi(arg_val);
3586 if(!strcmp(arg_name,
"pfsl3_show_templates")){
3587 pfsl3_show_templates = atoi(arg_val);
3590 if(!strcmp(arg_name,
"pfsl3_debug_mode")){
3591 pfsl3_debug_mode = atoi(arg_val);
3596 if(!strcmp(arg_name,
"gtrn_do_train")){
3597 gtrn_do_train = atoi(arg_val);
3600 if(!strcmp(arg_name,
"gtrn_gpu_id")){
3601 gtrn_gpu_id = atoi(arg_val);
3604 if(!strcmp(arg_name,
"gtrn_show_intermediate_output")){
3605 gtrn_show_intermediate_output = atoi(arg_val);
3608 if(!strcmp(arg_name,
"gtrn_model_file")){
3609 gtrn_model_file = std::string(arg_val);
3612 if(!strcmp(arg_name,
"gtrn_trained_file")){
3613 gtrn_trained_file = std::string(arg_val);
3617 if(!strcmp(arg_name,
"dft_res_to_l")){
3618 dft_res_to_l = atof32(arg_val);
3621 if(!strcmp(arg_name,
"dft_p_to_l")){
3622 dft_p_to_l = atof32(arg_val);
3625 if(!strcmp(arg_name,
"dft_max_iter")){
3626 dft_max_iter = atoi(arg_val);
3629 if(!strcmp(arg_name,
"dft_max_iter_single_level")){
3630 dft_max_iter_single_level = atoi(arg_val);
3633 if(!strcmp(arg_name,
"dft_pyramid_smoothing_variance")){
3634 dft_pyramid_smoothing_variance = atof32_arr(arg_val);
3637 if(!strcmp(arg_name,
"dft_presmoothing_variance")){
3638 dft_presmoothing_variance = atof32(arg_val);
3641 if(!strcmp(arg_name,
"dft_n_control_points_on_edge")){
3642 dft_n_control_points_on_edge = atoi(arg_val);
3645 if(!strcmp(arg_name,
"dft_b_adaptative_choice_of_points")){
3646 dft_b_adaptative_choice_of_points = atoi(arg_val);
3649 if(!strcmp(arg_name,
"dft_b_normalize_descriptors")){
3650 dft_b_normalize_descriptors = atoi(arg_val);
3653 if(!strcmp(arg_name,
"dft_optimization_type")){
3654 dft_optimization_type = atoi(arg_val);
3658 if(!strcmp(arg_name,
"frg_n_bins")){
3659 frg_n_bins = atoi(arg_val);
3662 if(!strcmp(arg_name,
"frg_search_margin")){
3663 frg_search_margin = atoi(arg_val);
3666 if(!strcmp(arg_name,
"frg_hist_cmp_metric")){
3667 frg_hist_cmp_metric = atoi(arg_val);
3670 if(!strcmp(arg_name,
"frg_resize_factor")){
3671 frg_resize_factor = atof(arg_val);
3674 if(!strcmp(arg_name,
"frg_show_window")){
3675 frg_show_window = atoi(arg_val);
3679 if(!strcmp(arg_name,
"dfm_nfmaps")){
3680 dfm_nfmaps = atoi(arg_val);
3683 if(!strcmp(arg_name,
"dfm_layer_name")){
3684 processStringParam(dfm_layer_name, arg_val);
3687 if(!strcmp(arg_name,
"dfm_vis")){
3688 dfm_vis = atoi(arg_val);
3691 if(!strcmp(arg_name,
"dfm_zncc")){
3692 dfm_zncc = atoi(arg_val);
3695 if(!strcmp(arg_name,
"dfm_model_f_name")){
3696 processStringParam(dfm_model_f_name, arg_val);
3699 if(!strcmp(arg_name,
"dfm_params_f_name")){
3700 processStringParam(dfm_params_f_name, arg_val);
3703 if(!strcmp(arg_name,
"dfm_mean_f_name")){
3704 processStringParam(dfm_mean_f_name, arg_val);
3708 if(!strcmp(arg_name,
"spi_type")){
3709 spi_type = atoi(arg_val);
3712 if(!strcmp(arg_name,
"spi_pix_diff_thresh")){
3713 spi_pix_diff_thresh = atof(arg_val);
3716 if(!strcmp(arg_name,
"spi_grad_thresh")){
3717 spi_grad_thresh = atof(arg_val);
3720 if(!strcmp(arg_name,
"spi_grad_use_union")){
3721 spi_grad_use_union = atoi(arg_val);
3724 if(!strcmp(arg_name,
"spi_gftt_max_corners")){
3725 spi_gftt_max_corners = atoi(arg_val);
3728 if(!strcmp(arg_name,
"spi_gftt_quality_level")){
3729 spi_gftt_quality_level = atof(arg_val);
3732 if(!strcmp(arg_name,
"spi_gftt_min_distance")){
3733 spi_gftt_min_distance = atof(arg_val);
3736 if(!strcmp(arg_name,
"spi_gftt_block_size")){
3737 spi_gftt_block_size = atoi(arg_val);
3740 if(!strcmp(arg_name,
"spi_gftt_use_harris_detector")){
3741 spi_gftt_use_harris_detector = atoi(arg_val);
3744 if(!strcmp(arg_name,
"spi_gftt_use_union")){
3745 spi_gftt_use_union = atoi(arg_val);
3748 if(!strcmp(arg_name,
"spi_gftt_k")){
3749 spi_gftt_k = atof(arg_val);
3752 if(!strcmp(arg_name,
"spi_gftt_neigh_offset")){
3753 spi_gftt_neigh_offset = atoi(arg_val);
3757 if(!strcmp(arg_name,
"extracted_frame_ids")){
3758 extracted_frame_ids = atoi_arr(arg_val);
3761 if(!strcmp(arg_name,
"extraction_id")){
3762 extraction_id = atoi(arg_val);
3766 if(!strcmp(arg_name,
"pca_n_eigenvec")){
3767 pca_n_eigenvec = atoi(arg_val);
3770 if(!strcmp(arg_name,
"pca_batchsize")){
3771 pca_batchsize = atoi(arg_val);
3774 if(!strcmp(arg_name,
"pca_f_factor")){
3775 pca_f_factor = atof32(arg_val);
3778 if(!strcmp(arg_name,
"pca_show_basis")){
3779 pca_show_basis = atoi(arg_val);
3784 if(!strcmp(arg_name,
"reg_ssm")){
3785 reg_ssm = std::string(arg_val);
3788 if(!strcmp(arg_name,
"reg_ilm")){
3789 reg_ilm = std::string(arg_val);
3792 if(!strcmp(arg_name,
"reg_track_border")){
3793 reg_track_border = atoi(arg_val);
3796 if(!strcmp(arg_name,
"reg_grayscale_img")){
3797 reg_grayscale_img = atoi(arg_val);
3800 if(!strcmp(arg_name,
"reg_show_output")){
3801 reg_show_output = atoi(arg_val);
3804 if(!strcmp(arg_name,
"reg_save_as_video")){
3805 reg_save_as_video = atoi(arg_val);
3808 if(!strcmp(arg_name,
"reg_video_fps")){
3809 reg_video_fps = atoi(arg_val);
3814 if(!strcmp(arg_name,
"syn_ssm")){
3815 syn_ssm = std::string(arg_val);
3818 if(!strcmp(arg_name,
"syn_ilm")){
3819 syn_ilm = std::string(arg_val);
3822 if(!strcmp(arg_name,
"syn_frame_id")){
3823 syn_frame_id = atoi(arg_val);
3826 if(!strcmp(arg_name,
"syn_grayscale_img")){
3827 syn_grayscale_img = atoi(arg_val);
3830 if(!strcmp(arg_name,
"syn_continuous_warping")){
3831 syn_continuous_warping = atoi(arg_val);
3834 if(!strcmp(arg_name,
"syn_ssm_sigma_ids")){
3835 syn_ssm_sigma_ids = atoi_arr(arg_val);
3838 if(!strcmp(arg_name,
"syn_ssm_mean_ids")){
3839 syn_ssm_mean_ids = atoi_arr(arg_val);
3842 if(!strcmp(arg_name,
"syn_am_sigma_ids")){
3843 syn_am_sigma_ids = atoi_arr(arg_val);
3846 if(!strcmp(arg_name,
"syn_am_mean_ids")){
3847 syn_am_mean_ids = atoi_arr(arg_val);
3850 if(!strcmp(arg_name,
"syn_pix_sigma")){
3851 syn_pix_sigma = atof(arg_val);
3854 if(!strcmp(arg_name,
"syn_am_on_obj")){
3855 syn_am_on_obj = atoi(arg_val);
3858 if(!strcmp(arg_name,
"syn_warp_entire_image")){
3859 syn_warp_entire_image = atoi(arg_val);
3862 if(!strcmp(arg_name,
"syn_background_type")){
3863 syn_background_type = atoi(arg_val);
3866 if(!strcmp(arg_name,
"syn_use_inv_warp")){
3867 syn_use_inv_warp = atoi(arg_val);
3870 if(!strcmp(arg_name,
"syn_out_suffix")){
3871 syn_out_suffix = std::string(arg_val);
3874 if(!strcmp(arg_name,
"syn_n_frames")){
3875 syn_n_frames = atoi(arg_val);
3878 if(!strcmp(arg_name,
"syn_add_noise")){
3879 syn_add_noise = atoi(arg_val);
3882 if(!strcmp(arg_name,
"syn_noise_mean")){
3883 syn_noise_mean = atof(arg_val);
3886 if(!strcmp(arg_name,
"syn_noise_sigma")){
3887 syn_noise_sigma = atof(arg_val);
3890 if(!strcmp(arg_name,
"syn_save_as_video")){
3891 syn_save_as_video = atoi(arg_val);
3894 if(!strcmp(arg_name,
"syn_video_fps")){
3895 syn_video_fps = atoi(arg_val);
3898 if(!strcmp(arg_name,
"syn_jpg_quality")){
3899 syn_jpg_quality = atoi(arg_val);
3902 if(!strcmp(arg_name,
"syn_show_output")){
3903 syn_show_output = atoi(arg_val);
3907 if(!strcmp(arg_name,
"mos_inv_tracking")){
3908 mos_inv_tracking = atoi(arg_val);
3911 if(!strcmp(arg_name,
"mos_use_norm_corners")){
3912 mos_use_norm_corners = atoi(arg_val);
3915 if(!strcmp(arg_name,
"mos_track_border")){
3916 mos_track_border = atoi(arg_val);
3919 if(!strcmp(arg_name,
"mos_border_width")){
3920 mos_border_width = atoi(arg_val);
3923 if(!strcmp(arg_name,
"mos_border_height")){
3924 mos_border_height = atoi(arg_val);
3927 if(!strcmp(arg_name,
"mos_init_offset_x")){
3928 mos_init_offset_x = atoi(arg_val);
3931 if(!strcmp(arg_name,
"mos_init_offset_y")){
3932 mos_init_offset_y = atoi(arg_val);
3935 if(!strcmp(arg_name,
"mos_disp_width")){
3936 mos_disp_width = atoi(arg_val);
3939 if(!strcmp(arg_name,
"mos_disp_height")){
3940 mos_disp_height = atoi(arg_val);
3943 if(!strcmp(arg_name,
"mos_show_grid")){
3944 mos_show_grid = atoi(arg_val);
3947 if(!strcmp(arg_name,
"mos_show_tracked_img")){
3948 mos_show_tracked_img = atoi(arg_val);
3951 if(!strcmp(arg_name,
"mos_show_patch")){
3952 mos_show_patch = atoi(arg_val);
3955 if(!strcmp(arg_name,
"mos_show_mask")){
3956 mos_show_mask = atoi(arg_val);
3959 if(!strcmp(arg_name,
"mos_use_write_mask")){
3960 mos_use_write_mask = atoi(arg_val);
3963 if(!strcmp(arg_name,
"mos_save_img")){
3964 mos_save_img = atoi(arg_val);
3967 if(!strcmp(arg_name,
"mos_out_fname")){
3968 mos_out_fname = std::string(arg_val);
3971 if(!strcmp(arg_name,
"mos_out_fmt")){
3972 mos_out_fmt = std::string(arg_val);
3975 if(!strcmp(arg_name,
"qr_input")){
3976 qr_input.push_back(std::string(arg_val));
3979 if(!strcmp(arg_name,
"qr_root_dir")){
3980 qr_root_dir = std::string(arg_val);
3983 if(!strcmp(arg_name,
"qr_detector_ssm")){
3984 qr_detector_ssm = std::string(arg_val);
3987 if(!strcmp(arg_name,
"qr_duplicate_min_dist")){
3988 qr_duplicate_min_dist = atof(arg_val);
3991 if(!strcmp(arg_name,
"qr_min_size")){
3992 qr_min_size = atof(arg_val);
3995 if(!strcmp(arg_name,
"qr_init_with_rect")){
3996 qr_init_with_rect = atoi(arg_val);
3999 if(!strcmp(arg_name,
"qr_n_markers")){
4000 qr_n_markers = atoi(arg_val);
4003 if(!strcmp(arg_name,
"py_visualize")){
4004 py_visualize = atoi(arg_val);
4007 if(!strcmp(arg_name,
"py_live_init")){
4008 py_live_init = atoi(arg_val);
4011 if(!strcmp(arg_name,
"mex_visualize")){
4012 mex_visualize = atoi(arg_val);
4015 if(!strcmp(arg_name,
"mex_live_init")){
4016 mex_live_init = atoi(arg_val);
4021 inline FILE* readTrackerParams(FILE * fid =
nullptr,
int print_args = 0){
4026 if(!fs::is_directory(config_dir)) {
4029 std::string fname = config_dir +
"/multi.cfg";
4030 printf(
"Opening file: %s...\n", fname.c_str());
4031 if(!(fid = fopen(fname.c_str(),
"r"))){
4032 printf(
"readTrackerParams :: Error: File could not be opened\n");
4036 char curr_line[500];
4037 char arg_name[500], arg_val[500];
4039 fgets(curr_line, 500, fid);
4040 strtok(curr_line,
"\n");
4041 strtok(curr_line,
"\r");
4043 if(curr_line[0] ==
'#')
4046 if(strlen(curr_line) <= 1)
4048 sscanf(curr_line,
"%s%s", arg_name, arg_val);
4049 strtok(arg_name,
"\n");
4050 strtok(arg_name,
"\r");
4051 strtok(arg_val,
"\n");
4052 strtok(arg_val,
"\r");
4053 char *alpha_arg_name = arg_name;
4054 while(!isalpha(*alpha_arg_name)){ ++alpha_arg_name; }
4055 if(strlen(alpha_arg_name) == 0){
continue; }
4057 printf(
"arg_name: %s arg_val: %s\n", alpha_arg_name, arg_val);
4058 processAgrument(alpha_arg_name, arg_val);
4064 inline bool parseArgumentPairs(
char * argv[],
int argc,
4065 int parse_type = 0,
int print_args = 0){
4070 if(argc <= 0){
return true; }
4072 if(parse_type && argc % 2 == 0){
4073 printf(
"Command line arguments must be specified in pairs\n");
4077 int max_arg = parse_type ? argc / 2 + 1 : argc;
4079 printf(
"argc: %d max_arg: %d\n", argc, max_arg);
4081 for(
int arg_id = 1; arg_id < max_arg; arg_id++){
4082 char arg_name[500], arg_val[500];
4085 sscanf(argv[2 * arg_id - 1],
"%s", arg_name);
4086 sscanf(argv[2 * arg_id],
"%s", arg_val);
4088 sscanf(argv[arg_id],
"%s%s", arg_name, arg_val);
4090 strtok(arg_name,
"\n");
4091 strtok(arg_name,
"\r");
4092 strtok(arg_val,
"\n");
4093 strtok(arg_val,
"\r");
4095 char *alpha_arg_name = arg_name;
4097 vector<char> arg_prefix;
4098 while(!isalpha(*alpha_arg_name)){
4099 arg_prefix.push_back(*alpha_arg_name);
4102 if(strlen(alpha_arg_name) == 0){
continue; }
4104 printf(
"arg_name: %s arg_val: %s\n", alpha_arg_name, arg_val);
4106 processAgrument(alpha_arg_name, arg_val, arg_prefix.data());
4111 inline std::string getSyntheticSeqName(){
4112 if(syn_out_suffix.empty()){
4113 syn_out_suffix = cv::format(
"warped_%s_s%d", syn_ssm.c_str(), syn_ssm_sigma_ids[0]);
4115 syn_out_suffix = cv::format(
"%s_%s_s%d", syn_out_suffix.c_str(),
4116 syn_ilm.c_str(), syn_am_sigma_ids[0]);
4119 syn_out_suffix = cv::format(
"%s_gauss_%4.2f_%4.2f", syn_out_suffix.c_str(),
4120 syn_noise_mean, syn_noise_sigma);
4123 return cv::format(
"%s_%d_%s", seq_name.c_str(), syn_frame_id, syn_out_suffix.c_str());
4125 inline bool postProcessParams(){
4126 if(mtf_res > 0){ resx = resy = mtf_res; }
4127 if(img_resize_factor <= 0){ img_resize_factor = 1; }
4129 if((img_source == SRC_IMG) || (img_source == SRC_DISK) || (img_source == SRC_VID)){
4131 int n_actors =
sizeof(actors) /
sizeof(actors[0]);
4133 if(actor_id >= n_actors){
4134 printf(
"Invalid actor id specified: %d\n", actor_id);
4137 actor = actors[actor_id];
4140 int n_sources = combined_n_sequences[actor_id];
4141 if(seq_id >= n_sources){
4142 printf(
"Invalid source id %d specified for actor %s with %d sources\n",
4143 seq_id, actor.c_str(), n_sources);
4146 seq_name = combined_sequences[actor_id][seq_id];
4148 if(actor ==
"Synthetic"){
4150 seq_name = getSyntheticSeqName();
4152 if(seq_name.empty()){
4153 printf(
"Source name must be specified if source ID is invalid\n");
4156 seq_path = db_root_path +
"/" + actor;
4159 if(seq_path.empty()){ seq_path =
"."; }
4160 seq_path = db_root_path +
"/" + seq_path;
4162 if(seq_fmt.empty()){
4163 seq_fmt = (img_source == SRC_IMG || img_source == SRC_DISK) ? IMG_FMT : VID_FMT;
4167 seq_name = (img_source == SRC_USB_CAM) ? USB_DEV_NAME : FW_DEV_NAME;
4168 if(seq_path.empty()){
4169 seq_path = (img_source == SRC_USB_CAM) ? USB_DEV_PATH : FW_DEV_PATH;
4171 if(seq_fmt.empty()){
4172 seq_fmt = (img_source == SRC_USB_CAM) ? USB_DEV_FMT : FW_DEV_FMT;
4174 show_tracking_error = reinit_on_failure = read_obj_from_gt =
4175 read_obj_from_file = pause_after_frame = invert_seq = 0;
4177 if(atoi(pre_proc_type.c_str()) < 0){
4179 input_buffer_size = 1;
4195 inline bool readParams(
int cmd_argc,
char* cmd_argv[]){
4197 bool custom_cfg =
false;
4198 if(cmd_argc > 2 && !strcmp(cmd_argv[1],
"config_dir")){
4199 config_dir = std::string(cmd_argv[2]);
4204 if(!fs::is_directory(config_dir)){
4206 std::cout <<
"Configuration folder: " <<
4207 config_dir <<
" does not exist\n";
4211 std::cout <<
"Reading configuration files from: " <<
4214 std::vector<char*> fargv;
4216 int fargc = readParams(fargv, (config_dir +
"/mtf.cfg").c_str());
4218 if(!parseArgumentPairs(fargv.data(), fargc)){
4219 printf(
"Error in parsing mtf.cfg\n");
4225 fargc = readParams(fargv, (config_dir +
"/modules.cfg").c_str());
4227 if(!parseArgumentPairs(fargv.data(), fargc)){
4228 printf(
"Error in parsing modules.cfg\n");
4234 fargc = readParams(fargv, (config_dir +
"/feat.cfg").c_str());
4236 if(!parseArgumentPairs(fargv.data(), fargc)){
4237 printf(
"Error in parsing feat.cfg\n");
4243 fargc = readParams(fargv, (config_dir +
"/examples.cfg").c_str());
4245 if(!parseArgumentPairs(fargv.data(), fargc)){
4246 printf(
"Error in parsing examples.cfg\n");
4252 fargc = readParams(fargv, (config_dir +
"/sigma.cfg").c_str());
4254 if(!parseArgumentPairs(fargv.data(), fargc)){
4255 printf(
"Error in parsing sigma.cfg\n");
4261 fargc = readParams(fargv, (config_dir +
"/thirdparty.cfg").c_str());
4263 if(!parseArgumentPairs(fargv.data(), fargc)){
4264 printf(
"Error in parsing thirdparty.cfg\n");
4271 if(cmd_argc > 0 && !parseArgumentPairs(cmd_argv, cmd_argc, 1, 0)){
4272 printf(
"Error in parsing command line arguments\n");
4275 if(!postProcessParams()){
4276 printf(
"Error in post processing params\n");
4281 inline bool readParams(
const char* param_str){
4285 std::vector<char*> fargv;
4286 fargv.push_back(
nullptr);
4287 std::string _param_str = std::string(param_str);
4288 std::istringstream iss(_param_str);
4292 if(subs.empty()){
continue; }
4294 char *cstr =
new char[subs.length() + 1];
4295 strcpy(cstr, subs.c_str());
4296 fargv.push_back(cstr);
4300 if(fargv.size() % 2 == 0){
4302 std::cout <<
"Parameters must be provided in pairs\n";
4305 return readParams(fargv.size(), fargv.data());
4307 inline void getSamplerParams(vectorvd &sigma, vectorvd &mean,
4308 const vectori &sigma_ids,
const vectori &mean_ids,
4324 for(
auto sigma_id : sigma_ids){
4325 if(sigma_id < 0 || static_cast<unsigned int>(sigma_id) >= ssm_sigma.size()){
4326 printf(
"Skipping invalid %s sigma ID: %d\n", name, sigma_id);
4329 sigma.push_back(ssm_sigma[sigma_id]);
4331 for(
auto mean_id : mean_ids){
4332 if(mean_id < 0 || static_cast<unsigned int>(mean_id) >= ssm_mean.size()){
4336 mean.push_back(ssm_mean[mean_id]);
4339 inline void getAMSamplerParams(vectorvd &sigma, vectorvd &mean,
4340 const vectori &sigma_ids,
const vectori &mean_ids,
4342 for(
auto sigma_id : sigma_ids){
4343 if(sigma_id < 0 || static_cast<unsigned int>(sigma_id) >= am_sigma.size()){
4344 printf(
"Skipping invalid %s sigma ID: %d\n", name, sigma_id);
4347 sigma.push_back(am_sigma[sigma_id]);
4349 for(
auto mean_id : mean_ids){
4350 if(mean_id < 0 || static_cast<unsigned int>(mean_id) >= am_mean.size()){
4353 mean.push_back(am_mean[mean_id]);
4357 inline void freeParams(){}
Definition: RegNetParams.h:32