-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathrun_dvs.m
129 lines (109 loc) · 6.03 KB
/
run_dvs.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
%% clear workspace %%
clear;
close;
clc;
%% get the current folder and cd to it %%
currentFolder = regexprep(mfilename('fullpath'), mfilename(), '');
cd(currentFolder);
%% dataset we want to extract features for and properties dependent on it %%
datasetName = 'IITM_DVS_10';
% number of folds %
if strcmp(datasetName, 'UCF11_DVS') == 1
% UCF11 dataset %
num_folds = 25;
num_classes = 11;
elseif strcmp(datasetName, 'IITM_DVS_10') == 1
% IITM_DVS_10 dataset %
num_folds = 12;
num_classes = 10;
elseif strcmp(datasetName, 'IITM_DVS_12') == 1
% IITM_DVS_12 dataset %
num_folds = 6;
num_classes = 12;
else
% unknown dataset %
num_folds = 0;
num_classes = 0;
end
% path to the dataset %
dataset_path = fullfile(currentFolder, '/data/', datasetName, '/original_data/');
% path to the features extracted %
features_path = fullfile(currentFolder, '/data/', datasetName, '/features_extracted/');
% path to the encoded data folder %
encoded_data_path = fullfile(currentFolder, '/data/', datasetName, '/encoded_data/');
%% running the k-fold %%
tic
fprintf('******************************************************\n');
fprintf('***** Running %d-fold on the %s dataset *****\n', num_folds, datasetName);
fprintf('******************************************************\n\n');
all_accuracy_xy_xt_yt = zeros(num_folds, 1);
all_accuracy_xy_xt_yt_MBHx_MBHy = zeros(num_folds, 1);
all_accuracy_xy_xt_yt_HoF = zeros(num_folds, 1);
all_accuracy_HoG = zeros(num_folds, 1);
all_accuracy_HoF = zeros(num_folds, 1);
all_accuracy_MBHx_MBHy = zeros(num_folds, 1);
all_accuracy_xy = zeros(num_folds, 1);
all_accuracy_xt = zeros(num_folds, 1);
all_accuracy_yt = zeros(num_folds, 1);
summed_confusion_xy_xt_yt = zeros(num_classes, num_classes);
summed_confusion_xy_xt_yt_MBHx_MBHy = zeros(num_classes, num_classes);
summed_confusion_xy_xt_yt_HoF = zeros(num_classes, num_classes);
summed_confusion_HoG = zeros(num_classes, num_classes);
summed_confusion_HoF = zeros(num_classes, num_classes);
summed_confusion_MBHx_MBHy = zeros(num_classes, num_classes);
summed_confusion_xy = zeros(num_classes, num_classes);
summed_confusion_xt = zeros(num_classes, num_classes);
summed_confusion_yt = zeros(num_classes, num_classes);
for K=1:num_folds
fprintf('Starting the fold, K = %d\n', K);
% generate codebooks for dense-features and motion-maps and encode all videos %
generate_codebook(K, datasetName, features_path, encoded_data_path, currentFolder);
% build SVM and combine the accuracies %
[accuracy_xy_xt_yt, accuracy_xy_xt_yt_MBHx_MBHy, accuracy_xy_xt_yt_HoF, accuracy_HoG, accuracy_HoF, accuracy_MBHx_MBHy, accuracy_xy, accuracy_xt, accuracy_yt, confusion_xy_xt_yt, confusion_xy_xt_yt_MBHx_MBHy, confusion_xy_xt_yt_HoF, confusion_HoG, confusion_HoF, confusion_MBHx_MBHy, confusion_xy, confusion_xt, confusion_yt] = svm_loo(encoded_data_path, num_classes);
% updating accuracies %
all_accuracy_xy_xt_yt(K) = accuracy_xy_xt_yt;
all_accuracy_xy_xt_yt_MBHx_MBHy(K) = accuracy_xy_xt_yt_MBHx_MBHy;
all_accuracy_xy_xt_yt_HoF(K) = accuracy_xy_xt_yt_HoF;
all_accuracy_HoG(K) = accuracy_HoG;
all_accuracy_HoF(K) = accuracy_HoF;
all_accuracy_MBHx_MBHy(K) = accuracy_MBHx_MBHy;
all_accuracy_xy(K) = accuracy_xy;
all_accuracy_xt(K) = accuracy_xt;
all_accuracy_yt(K) = accuracy_yt;
% updating the confusion matrix %
summed_confusion_xy_xt_yt = summed_confusion_xy_xt_yt + confusion_xy_xt_yt;
summed_confusion_xy_xt_yt_MBHx_MBHy = summed_confusion_xy_xt_yt_MBHx_MBHy + confusion_xy_xt_yt_MBHx_MBHy;
summed_confusion_xy_xt_yt_HoF = summed_confusion_xy_xt_yt_HoF + confusion_xy_xt_yt_HoF;
summed_confusion_HoG = summed_confusion_HoG + confusion_HoG;
summed_confusion_HoF = summed_confusion_HoF + confusion_HoF;
summed_confusion_MBHx_MBHy = summed_confusion_MBHx_MBHy + confusion_MBHx_MBHy;
summed_confusion_xy = summed_confusion_xy + confusion_xy;
summed_confusion_xt = summed_confusion_xt + confusion_xt;
summed_confusion_yt = summed_confusion_yt + confusion_yt;
% storing the accuracies %
cd(currentFolder);
accuracies_folder = strcat('./workspace_data/accuracies/', datasetName, '/');
save(strcat(accuracies_folder, 'all_accuracy_xy_xt_yt'), 'all_accuracy_xy_xt_yt', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_xy_xt_yt_MBHx_MBHy'), 'all_accuracy_xy_xt_yt_MBHx_MBHy', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_xy_xt_yt_HoF'), 'all_accuracy_xy_xt_yt_HoF', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_HoG'), 'all_accuracy_HoG', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_HoF'), 'all_accuracy_HoF', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_MBHx_MBHy'), 'all_accuracy_MBHx_MBHy', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_xy'), 'all_accuracy_xy', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_xt'), 'all_accuracy_xt', '-v7.3');
save(strcat(accuracies_folder, 'all_accuracy_yt'), 'all_accuracy_yt', '-v7.3');
% saving the confusion matrices %
cd(currentFolder);
confusion_folder = strcat('./workspace_data/confusion_matrices/', datasetName, '/');
save(strcat(confusion_folder, 'summed_confusion_xy_xt_yt'), 'summed_confusion_xy_xt_yt', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_xy_xt_yt_MBHx_MBHy'), 'summed_confusion_xy_xt_yt_MBHx_MBHy', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_xy_xt_yt_HoF'), 'summed_confusion_xy_xt_yt_HoF', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_HoG'), 'summed_confusion_HoG', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_HoF'), 'summed_confusion_HoF', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_MBHx_MBHy'), 'summed_confusion_MBHx_MBHy', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_xy'), 'summed_confusion_xy', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_xt'), 'summed_confusion_xt', '-v7.3');
save(strcat(confusion_folder, 'summed_confusion_yt'), 'summed_confusion_yt', '-v7.3');
end
toc
%% printing the accuracies %%