-
Notifications
You must be signed in to change notification settings - Fork 1
/
run_JMMAC_CPU.m
81 lines (68 loc) · 3.05 KB
/
run_JMMAC_CPU.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function results = run_JMMAC_CPU(seq, res_path, bSaveImage)
%% an offical MATLAB implementation of tracker 'Joint Modeling Motion and Appearance Cues~(JMMAC) for Robust RGB-T Tracking'.
%% CPU version may lead a performance fluctuation.
setpath();
vl_setupnn();
%% setting for vot-rgbt dataset.
seq.format = 'rgbt';
%% visualization parameter
visualize = 0;
%% gpu selection, if only use CPU, set use_gpu = false and recompile Matconvnet and.
use_gpu = false; %false true
gpu_id = [];
%%
frame_interval = 3;
%% parameter setting
t_params = t_parameter_setting();
det_params = det_parameter_setting();
kf_params = kf_parameter_setting();
[t_params,det_params,kf_params] = parameter_setting(t_params,det_params,kf_params,use_gpu,gpu_id);
seq.frame = 1;
seq.time = 0;
[seq, im_rgb, im_t] = get_sequence_info(seq);
%% first frame initialization
[t_state,t_params] = t_init(t_params,im_t,seq);
t_state = judge_pe(t_state,im_rgb,im_t);
[det_state,det_params] = det_init(t_state,t_params,det_params,im_rgb,seq);
[kf_state,kf_params] = kf_init(t_state, kf_params,im_rgb,seq);
%% first frame updating
[t_state,kf_state,t_params,kf_params] = t_updating(t_state,kf_state,t_params,kf_params,im_rgb,im_t,seq);
[seq] = get_tracking_results(t_state, seq);
if visualize
seq = visualization_rgbt(t_state,det_state,kf_state,im_t,seq);
end
im_record_rgb = cell(frame_interval,1);
im_record_t = cell(frame_interval,1);
pos_record = cell(frame_interval,1);
target_sz_record = cell(frame_interval,1);
%% record previous frames and postions
[im_record_rgb,im_record_t,pos_record,target_sz_record] = record_frame(im_record_rgb,im_record_t,pos_record,target_sz_record,im_rgb,im_t,t_state.pos,t_state.target_sz);
%% main loop
while true
det_state = det_reset(det_state);
[seq, im_rgb, im_t] = get_sequence_frame(seq);
[flag, im_rgb, im_t] = check_image(im_rgb,im_t);
if flag
break;
end
tic();
%% tracking
flagCM = judge_cm(im_rgb, im_t, im_record_rgb{1}, im_record_t{1});
[t_state,kf_state] = t_tracking(t_state,kf_state,t_params, im_t, im_record_t,pos_record,target_sz_record, flagCM, seq);
[t_state,kf_state,kf_params] = judge_occ(t_state,kf_state,t_params,kf_params,im_rgb,seq);
[t_state] = pos_updating(t_state,kf_state,t_params);
[t_state,kf_state] = kf_updating(t_state,kf_state,t_params,seq);
[t_state,det_state,t_params] = process_det(t_state,kf_state,det_state,t_params,det_params,im_rgb);
[t_state, t_params] = sz_updating(t_state,det_state,t_params);
%% updating
[t_state,kf_state,t_params,kf_params] = t_updating(t_state,kf_state,t_params,kf_params,im_rgb,im_t,seq);
seq.time = seq.time + toc();
[seq] = get_tracking_results(t_state, seq);
%% visualization
if visualize
seq = visualization_rgbt(t_state,det_state,kf_state,im_t,seq);
end
[ im_record_rgb,im_record_t,pos_record,target_sz_record ] = record_frame(im_record_rgb,im_record_t,pos_record,target_sz_record,im_rgb,im_t,t_state.pos,t_state.target_sz);
end
[seq, results] = get_sequence_results(seq);
disp(['fps: ' num2str(results.fps)])