Commit 3d27a527054b1f8a6b020d129f6aff9bf93524c1
Merge branch 'master' of https://github.com/biometrics/openbr
Showing
20 changed files
with
2296 additions
and
102 deletions
app/br/br.cpp
| @@ -138,8 +138,8 @@ public: | @@ -138,8 +138,8 @@ public: | ||
| 138 | check((parc >= 2) && (parc <= 3), "Incorrect parameter count for 'evalDetection'."); | 138 | check((parc >= 2) && (parc <= 3), "Incorrect parameter count for 'evalDetection'."); |
| 139 | br_eval_detection(parv[0], parv[1], parc == 3 ? parv[2] : ""); | 139 | br_eval_detection(parv[0], parv[1], parc == 3 ? parv[2] : ""); |
| 140 | } else if (!strcmp(fun, "evalLandmarking")) { | 140 | } else if (!strcmp(fun, "evalLandmarking")) { |
| 141 | - check((parc >= 2) && (parc <= 3), "Incorrect parameter count for 'evalLandmarking'."); | ||
| 142 | - br_eval_detection(parv[0], parv[1], parc == 3 ? parv[2] : ""); | 141 | + check((parc >= 2) && (parc <= 5), "Incorrect parameter count for 'evalLandmarking'."); |
| 142 | + br_eval_landmarking(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? atoi(parv[3]) : 0, parc >= 5 ? atoi(parv[4]) : 1); | ||
| 143 | } else if (!strcmp(fun, "evalRegression")) { | 143 | } else if (!strcmp(fun, "evalRegression")) { |
| 144 | check(parc >= 2 && parc <= 4, "Incorrect parameter count for 'evalRegression'."); | 144 | check(parc >= 2 && parc <= 4, "Incorrect parameter count for 'evalRegression'."); |
| 145 | br_eval_regression(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? parv[3] : ""); | 145 | br_eval_regression(parv[0], parv[1], parc >= 3 ? parv[2] : "", parc >= 4 ? parv[3] : ""); |
| @@ -221,7 +221,7 @@ private: | @@ -221,7 +221,7 @@ private: | ||
| 221 | "-evalClassification <predicted_gallery> <truth_gallery> <predicted property name> <ground truth proprty name>\n" | 221 | "-evalClassification <predicted_gallery> <truth_gallery> <predicted property name> <ground truth proprty name>\n" |
| 222 | "-evalClustering <clusters> <gallery>\n" | 222 | "-evalClustering <clusters> <gallery>\n" |
| 223 | "-evalDetection <predicted_gallery> <truth_gallery> [{csv}]\n" | 223 | "-evalDetection <predicted_gallery> <truth_gallery> [{csv}]\n" |
| 224 | - "-evalLandmarking <predicted_gallery> <truth_gallery> [{csv}]\n" | 224 | + "-evalLandmarking <predicted_gallery> <truth_gallery> [{csv} [<normalization_index_a> <normalization_index_b>]]\n" |
| 225 | "-evalRegression <predicted_gallery> <truth_gallery> <predicted property name> <ground truth property name>\n" | 225 | "-evalRegression <predicted_gallery> <truth_gallery> <predicted property name> <ground truth property name>\n" |
| 226 | "-plotDetection <file> ... <file> {destination}\n" | 226 | "-plotDetection <file> ... <file> {destination}\n" |
| 227 | "-plotMetadata <file> ... <file> <columns>\n" | 227 | "-plotMetadata <file> ... <file> <columns>\n" |
data/KTH/test_9ppl.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<biometric-signature-set> | ||
| 3 | + <biometric-signature name="boxing17-1"> | ||
| 4 | + <presentation Label="boxing" file-name="boxing/person17_boxing_d1_uncomp.avi" /> | ||
| 5 | + </biometric-signature> | ||
| 6 | + <biometric-signature name="boxing17-2"> | ||
| 7 | + <presentation Label="boxing" file-name="boxing/person17_boxing_d2_uncomp.avi" /> | ||
| 8 | + </biometric-signature> | ||
| 9 | + <biometric-signature name="boxing17-3"> | ||
| 10 | + <presentation Label="boxing" file-name="boxing/person17_boxing_d3_uncomp.avi" /> | ||
| 11 | + </biometric-signature> | ||
| 12 | + <biometric-signature name="boxing17-4"> | ||
| 13 | + <presentation Label="boxing" file-name="boxing/person17_boxing_d4_uncomp.avi" /> | ||
| 14 | + </biometric-signature> | ||
| 15 | + <biometric-signature name="boxing18-1"> | ||
| 16 | + <presentation Label="boxing" file-name="boxing/person18_boxing_d1_uncomp.avi" /> | ||
| 17 | + </biometric-signature> | ||
| 18 | + <biometric-signature name="boxing18-2"> | ||
| 19 | + <presentation Label="boxing" file-name="boxing/person18_boxing_d2_uncomp.avi" /> | ||
| 20 | + </biometric-signature> | ||
| 21 | + <biometric-signature name="boxing18-3"> | ||
| 22 | + <presentation Label="boxing" file-name="boxing/person18_boxing_d3_uncomp.avi" /> | ||
| 23 | + </biometric-signature> | ||
| 24 | + <biometric-signature name="boxing18-4"> | ||
| 25 | + <presentation Label="boxing" file-name="boxing/person18_boxing_d4_uncomp.avi" /> | ||
| 26 | + </biometric-signature> | ||
| 27 | + <biometric-signature name="boxing19-1"> | ||
| 28 | + <presentation Label="boxing" file-name="boxing/person19_boxing_d1_uncomp.avi" /> | ||
| 29 | + </biometric-signature> | ||
| 30 | + <biometric-signature name="boxing19-2"> | ||
| 31 | + <presentation Label="boxing" file-name="boxing/person19_boxing_d2_uncomp.avi" /> | ||
| 32 | + </biometric-signature> | ||
| 33 | + <biometric-signature name="boxing19-3"> | ||
| 34 | + <presentation Label="boxing" file-name="boxing/person19_boxing_d3_uncomp.avi" /> | ||
| 35 | + </biometric-signature> | ||
| 36 | + <biometric-signature name="boxing19-4"> | ||
| 37 | + <presentation Label="boxing" file-name="boxing/person19_boxing_d4_uncomp.avi" /> | ||
| 38 | + </biometric-signature> | ||
| 39 | + <biometric-signature name="boxing20-1"> | ||
| 40 | + <presentation Label="boxing" file-name="boxing/person20_boxing_d1_uncomp.avi" /> | ||
| 41 | + </biometric-signature> | ||
| 42 | + <biometric-signature name="boxing20-2"> | ||
| 43 | + <presentation Label="boxing" file-name="boxing/person20_boxing_d2_uncomp.avi" /> | ||
| 44 | + </biometric-signature> | ||
| 45 | + <biometric-signature name="boxing20-3"> | ||
| 46 | + <presentation Label="boxing" file-name="boxing/person20_boxing_d3_uncomp.avi" /> | ||
| 47 | + </biometric-signature> | ||
| 48 | + <biometric-signature name="boxing20-4"> | ||
| 49 | + <presentation Label="boxing" file-name="boxing/person20_boxing_d4_uncomp.avi" /> | ||
| 50 | + </biometric-signature> | ||
| 51 | + <biometric-signature name="boxing21-1"> | ||
| 52 | + <presentation Label="boxing" file-name="boxing/person21_boxing_d1_uncomp.avi" /> | ||
| 53 | + </biometric-signature> | ||
| 54 | + <biometric-signature name="boxing21-2"> | ||
| 55 | + <presentation Label="boxing" file-name="boxing/person21_boxing_d2_uncomp.avi" /> | ||
| 56 | + </biometric-signature> | ||
| 57 | + <biometric-signature name="boxing21-3"> | ||
| 58 | + <presentation Label="boxing" file-name="boxing/person21_boxing_d3_uncomp.avi" /> | ||
| 59 | + </biometric-signature> | ||
| 60 | + <biometric-signature name="boxing21-4"> | ||
| 61 | + <presentation Label="boxing" file-name="boxing/person21_boxing_d4_uncomp.avi" /> | ||
| 62 | + </biometric-signature> | ||
| 63 | + <biometric-signature name="boxing22-1"> | ||
| 64 | + <presentation Label="boxing" file-name="boxing/person22_boxing_d1_uncomp.avi" /> | ||
| 65 | + </biometric-signature> | ||
| 66 | + <biometric-signature name="boxing22-2"> | ||
| 67 | + <presentation Label="boxing" file-name="boxing/person22_boxing_d2_uncomp.avi" /> | ||
| 68 | + </biometric-signature> | ||
| 69 | + <biometric-signature name="boxing22-3"> | ||
| 70 | + <presentation Label="boxing" file-name="boxing/person22_boxing_d3_uncomp.avi" /> | ||
| 71 | + </biometric-signature> | ||
| 72 | + <biometric-signature name="boxing22-4"> | ||
| 73 | + <presentation Label="boxing" file-name="boxing/person22_boxing_d4_uncomp.avi" /> | ||
| 74 | + </biometric-signature> | ||
| 75 | + <biometric-signature name="boxing23-1"> | ||
| 76 | + <presentation Label="boxing" file-name="boxing/person23_boxing_d1_uncomp.avi" /> | ||
| 77 | + </biometric-signature> | ||
| 78 | + <biometric-signature name="boxing23-2"> | ||
| 79 | + <presentation Label="boxing" file-name="boxing/person23_boxing_d2_uncomp.avi" /> | ||
| 80 | + </biometric-signature> | ||
| 81 | + <biometric-signature name="boxing23-3"> | ||
| 82 | + <presentation Label="boxing" file-name="boxing/person23_boxing_d3_uncomp.avi" /> | ||
| 83 | + </biometric-signature> | ||
| 84 | + <biometric-signature name="boxing23-4"> | ||
| 85 | + <presentation Label="boxing" file-name="boxing/person23_boxing_d4_uncomp.avi" /> | ||
| 86 | + </biometric-signature> | ||
| 87 | + <biometric-signature name="boxing24-1"> | ||
| 88 | + <presentation Label="boxing" file-name="boxing/person24_boxing_d1_uncomp.avi" /> | ||
| 89 | + </biometric-signature> | ||
| 90 | + <biometric-signature name="boxing24-2"> | ||
| 91 | + <presentation Label="boxing" file-name="boxing/person24_boxing_d2_uncomp.avi" /> | ||
| 92 | + </biometric-signature> | ||
| 93 | + <biometric-signature name="boxing24-3"> | ||
| 94 | + <presentation Label="boxing" file-name="boxing/person24_boxing_d3_uncomp.avi" /> | ||
| 95 | + </biometric-signature> | ||
| 96 | + <biometric-signature name="boxing24-4"> | ||
| 97 | + <presentation Label="boxing" file-name="boxing/person24_boxing_d4_uncomp.avi" /> | ||
| 98 | + </biometric-signature> | ||
| 99 | + <biometric-signature name="boxing25-1"> | ||
| 100 | + <presentation Label="boxing" file-name="boxing/person25_boxing_d1_uncomp.avi" /> | ||
| 101 | + </biometric-signature> | ||
| 102 | + <biometric-signature name="boxing25-2"> | ||
| 103 | + <presentation Label="boxing" file-name="boxing/person25_boxing_d2_uncomp.avi" /> | ||
| 104 | + </biometric-signature> | ||
| 105 | + <biometric-signature name="boxing25-3"> | ||
| 106 | + <presentation Label="boxing" file-name="boxing/person25_boxing_d3_uncomp.avi" /> | ||
| 107 | + </biometric-signature> | ||
| 108 | + <biometric-signature name="boxing25-4"> | ||
| 109 | + <presentation Label="boxing" file-name="boxing/person25_boxing_d4_uncomp.avi" /> | ||
| 110 | + </biometric-signature> | ||
| 111 | + <biometric-signature name="handclapping17-1"> | ||
| 112 | + <presentation Label="handclapping" file-name="handclapping/person17_handclapping_d1_uncomp.avi" /> | ||
| 113 | + </biometric-signature> | ||
| 114 | + <biometric-signature name="handclapping17-2"> | ||
| 115 | + <presentation Label="handclapping" file-name="handclapping/person17_handclapping_d2_uncomp.avi" /> | ||
| 116 | + </biometric-signature> | ||
| 117 | + <biometric-signature name="handclapping17-3"> | ||
| 118 | + <presentation Label="handclapping" file-name="handclapping/person17_handclapping_d3_uncomp.avi" /> | ||
| 119 | + </biometric-signature> | ||
| 120 | + <biometric-signature name="handclapping17-4"> | ||
| 121 | + <presentation Label="handclapping" file-name="handclapping/person17_handclapping_d4_uncomp.avi" /> | ||
| 122 | + </biometric-signature> | ||
| 123 | + <biometric-signature name="handclapping18-1"> | ||
| 124 | + <presentation Label="handclapping" file-name="handclapping/person18_handclapping_d1_uncomp.avi" /> | ||
| 125 | + </biometric-signature> | ||
| 126 | + <biometric-signature name="handclapping18-2"> | ||
| 127 | + <presentation Label="handclapping" file-name="handclapping/person18_handclapping_d2_uncomp.avi" /> | ||
| 128 | + </biometric-signature> | ||
| 129 | + <biometric-signature name="handclapping18-3"> | ||
| 130 | + <presentation Label="handclapping" file-name="handclapping/person18_handclapping_d3_uncomp.avi" /> | ||
| 131 | + </biometric-signature> | ||
| 132 | + <biometric-signature name="handclapping18-4"> | ||
| 133 | + <presentation Label="handclapping" file-name="handclapping/person18_handclapping_d4_uncomp.avi" /> | ||
| 134 | + </biometric-signature> | ||
| 135 | + <biometric-signature name="handclapping19-1"> | ||
| 136 | + <presentation Label="handclapping" file-name="handclapping/person19_handclapping_d1_uncomp.avi" /> | ||
| 137 | + </biometric-signature> | ||
| 138 | + <biometric-signature name="handclapping19-2"> | ||
| 139 | + <presentation Label="handclapping" file-name="handclapping/person19_handclapping_d2_uncomp.avi" /> | ||
| 140 | + </biometric-signature> | ||
| 141 | + <biometric-signature name="handclapping19-3"> | ||
| 142 | + <presentation Label="handclapping" file-name="handclapping/person19_handclapping_d3_uncomp.avi" /> | ||
| 143 | + </biometric-signature> | ||
| 144 | + <biometric-signature name="handclapping19-4"> | ||
| 145 | + <presentation Label="handclapping" file-name="handclapping/person19_handclapping_d4_uncomp.avi" /> | ||
| 146 | + </biometric-signature> | ||
| 147 | + <biometric-signature name="handclapping20-1"> | ||
| 148 | + <presentation Label="handclapping" file-name="handclapping/person20_handclapping_d1_uncomp.avi" /> | ||
| 149 | + </biometric-signature> | ||
| 150 | + <biometric-signature name="handclapping20-2"> | ||
| 151 | + <presentation Label="handclapping" file-name="handclapping/person20_handclapping_d2_uncomp.avi" /> | ||
| 152 | + </biometric-signature> | ||
| 153 | + <biometric-signature name="handclapping20-3"> | ||
| 154 | + <presentation Label="handclapping" file-name="handclapping/person20_handclapping_d3_uncomp.avi" /> | ||
| 155 | + </biometric-signature> | ||
| 156 | + <biometric-signature name="handclapping20-4"> | ||
| 157 | + <presentation Label="handclapping" file-name="handclapping/person20_handclapping_d4_uncomp.avi" /> | ||
| 158 | + </biometric-signature> | ||
| 159 | + <biometric-signature name="handclapping21-1"> | ||
| 160 | + <presentation Label="handclapping" file-name="handclapping/person21_handclapping_d1_uncomp.avi" /> | ||
| 161 | + </biometric-signature> | ||
| 162 | + <biometric-signature name="handclapping21-2"> | ||
| 163 | + <presentation Label="handclapping" file-name="handclapping/person21_handclapping_d2_uncomp.avi" /> | ||
| 164 | + </biometric-signature> | ||
| 165 | + <biometric-signature name="handclapping21-3"> | ||
| 166 | + <presentation Label="handclapping" file-name="handclapping/person21_handclapping_d3_uncomp.avi" /> | ||
| 167 | + </biometric-signature> | ||
| 168 | + <biometric-signature name="handclapping21-4"> | ||
| 169 | + <presentation Label="handclapping" file-name="handclapping/person21_handclapping_d4_uncomp.avi" /> | ||
| 170 | + </biometric-signature> | ||
| 171 | + <biometric-signature name="handclapping22-1"> | ||
| 172 | + <presentation Label="handclapping" file-name="handclapping/person22_handclapping_d1_uncomp.avi" /> | ||
| 173 | + </biometric-signature> | ||
| 174 | + <biometric-signature name="handclapping22-2"> | ||
| 175 | + <presentation Label="handclapping" file-name="handclapping/person22_handclapping_d2_uncomp.avi" /> | ||
| 176 | + </biometric-signature> | ||
| 177 | + <biometric-signature name="handclapping22-3"> | ||
| 178 | + <presentation Label="handclapping" file-name="handclapping/person22_handclapping_d3_uncomp.avi" /> | ||
| 179 | + </biometric-signature> | ||
| 180 | + <biometric-signature name="handclapping22-4"> | ||
| 181 | + <presentation Label="handclapping" file-name="handclapping/person22_handclapping_d4_uncomp.avi" /> | ||
| 182 | + </biometric-signature> | ||
| 183 | + <biometric-signature name="handclapping23-1"> | ||
| 184 | + <presentation Label="handclapping" file-name="handclapping/person23_handclapping_d1_uncomp.avi" /> | ||
| 185 | + </biometric-signature> | ||
| 186 | + <biometric-signature name="handclapping23-2"> | ||
| 187 | + <presentation Label="handclapping" file-name="handclapping/person23_handclapping_d2_uncomp.avi" /> | ||
| 188 | + </biometric-signature> | ||
| 189 | + <biometric-signature name="handclapping23-3"> | ||
| 190 | + <presentation Label="handclapping" file-name="handclapping/person23_handclapping_d3_uncomp.avi" /> | ||
| 191 | + </biometric-signature> | ||
| 192 | + <biometric-signature name="handclapping23-4"> | ||
| 193 | + <presentation Label="handclapping" file-name="handclapping/person23_handclapping_d4_uncomp.avi" /> | ||
| 194 | + </biometric-signature> | ||
| 195 | + <biometric-signature name="handclapping24-1"> | ||
| 196 | + <presentation Label="handclapping" file-name="handclapping/person24_handclapping_d1_uncomp.avi" /> | ||
| 197 | + </biometric-signature> | ||
| 198 | + <biometric-signature name="handclapping24-2"> | ||
| 199 | + <presentation Label="handclapping" file-name="handclapping/person24_handclapping_d2_uncomp.avi" /> | ||
| 200 | + </biometric-signature> | ||
| 201 | + <biometric-signature name="handclapping24-3"> | ||
| 202 | + <presentation Label="handclapping" file-name="handclapping/person24_handclapping_d3_uncomp.avi" /> | ||
| 203 | + </biometric-signature> | ||
| 204 | + <biometric-signature name="handclapping24-4"> | ||
| 205 | + <presentation Label="handclapping" file-name="handclapping/person24_handclapping_d4_uncomp.avi" /> | ||
| 206 | + </biometric-signature> | ||
| 207 | + <biometric-signature name="handclapping25-1"> | ||
| 208 | + <presentation Label="handclapping" file-name="handclapping/person25_handclapping_d1_uncomp.avi" /> | ||
| 209 | + </biometric-signature> | ||
| 210 | + <biometric-signature name="handclapping25-2"> | ||
| 211 | + <presentation Label="handclapping" file-name="handclapping/person25_handclapping_d2_uncomp.avi" /> | ||
| 212 | + </biometric-signature> | ||
| 213 | + <biometric-signature name="handclapping25-3"> | ||
| 214 | + <presentation Label="handclapping" file-name="handclapping/person25_handclapping_d3_uncomp.avi" /> | ||
| 215 | + </biometric-signature> | ||
| 216 | + <biometric-signature name="handclapping25-4"> | ||
| 217 | + <presentation Label="handclapping" file-name="handclapping/person25_handclapping_d4_uncomp.avi" /> | ||
| 218 | + </biometric-signature> | ||
| 219 | + <biometric-signature name="handwaving17-1"> | ||
| 220 | + <presentation Label="handwaving" file-name="handwaving/person17_handwaving_d1_uncomp.avi" /> | ||
| 221 | + </biometric-signature> | ||
| 222 | + <biometric-signature name="handwaving17-2"> | ||
| 223 | + <presentation Label="handwaving" file-name="handwaving/person17_handwaving_d2_uncomp.avi" /> | ||
| 224 | + </biometric-signature> | ||
| 225 | + <biometric-signature name="handwaving17-3"> | ||
| 226 | + <presentation Label="handwaving" file-name="handwaving/person17_handwaving_d3_uncomp.avi" /> | ||
| 227 | + </biometric-signature> | ||
| 228 | + <biometric-signature name="handwaving17-4"> | ||
| 229 | + <presentation Label="handwaving" file-name="handwaving/person17_handwaving_d4_uncomp.avi" /> | ||
| 230 | + </biometric-signature> | ||
| 231 | + <biometric-signature name="handwaving18-1"> | ||
| 232 | + <presentation Label="handwaving" file-name="handwaving/person18_handwaving_d1_uncomp.avi" /> | ||
| 233 | + </biometric-signature> | ||
| 234 | + <biometric-signature name="handwaving18-2"> | ||
| 235 | + <presentation Label="handwaving" file-name="handwaving/person18_handwaving_d2_uncomp.avi" /> | ||
| 236 | + </biometric-signature> | ||
| 237 | + <biometric-signature name="handwaving18-3"> | ||
| 238 | + <presentation Label="handwaving" file-name="handwaving/person18_handwaving_d3_uncomp.avi" /> | ||
| 239 | + </biometric-signature> | ||
| 240 | + <biometric-signature name="handwaving18-4"> | ||
| 241 | + <presentation Label="handwaving" file-name="handwaving/person18_handwaving_d4_uncomp.avi" /> | ||
| 242 | + </biometric-signature> | ||
| 243 | + <biometric-signature name="handwaving19-1"> | ||
| 244 | + <presentation Label="handwaving" file-name="handwaving/person19_handwaving_d1_uncomp.avi" /> | ||
| 245 | + </biometric-signature> | ||
| 246 | + <biometric-signature name="handwaving19-2"> | ||
| 247 | + <presentation Label="handwaving" file-name="handwaving/person19_handwaving_d2_uncomp.avi" /> | ||
| 248 | + </biometric-signature> | ||
| 249 | + <biometric-signature name="handwaving19-3"> | ||
| 250 | + <presentation Label="handwaving" file-name="handwaving/person19_handwaving_d3_uncomp.avi" /> | ||
| 251 | + </biometric-signature> | ||
| 252 | + <biometric-signature name="handwaving19-4"> | ||
| 253 | + <presentation Label="handwaving" file-name="handwaving/person19_handwaving_d4_uncomp.avi" /> | ||
| 254 | + </biometric-signature> | ||
| 255 | + <biometric-signature name="handwaving20-1"> | ||
| 256 | + <presentation Label="handwaving" file-name="handwaving/person20_handwaving_d1_uncomp.avi" /> | ||
| 257 | + </biometric-signature> | ||
| 258 | + <biometric-signature name="handwaving20-2"> | ||
| 259 | + <presentation Label="handwaving" file-name="handwaving/person20_handwaving_d2_uncomp.avi" /> | ||
| 260 | + </biometric-signature> | ||
| 261 | + <biometric-signature name="handwaving20-3"> | ||
| 262 | + <presentation Label="handwaving" file-name="handwaving/person20_handwaving_d3_uncomp.avi" /> | ||
| 263 | + </biometric-signature> | ||
| 264 | + <biometric-signature name="handwaving20-4"> | ||
| 265 | + <presentation Label="handwaving" file-name="handwaving/person20_handwaving_d4_uncomp.avi" /> | ||
| 266 | + </biometric-signature> | ||
| 267 | + <biometric-signature name="handwaving21-1"> | ||
| 268 | + <presentation Label="handwaving" file-name="handwaving/person21_handwaving_d1_uncomp.avi" /> | ||
| 269 | + </biometric-signature> | ||
| 270 | + <biometric-signature name="handwaving21-2"> | ||
| 271 | + <presentation Label="handwaving" file-name="handwaving/person21_handwaving_d2_uncomp.avi" /> | ||
| 272 | + </biometric-signature> | ||
| 273 | + <biometric-signature name="handwaving21-3"> | ||
| 274 | + <presentation Label="handwaving" file-name="handwaving/person21_handwaving_d3_uncomp.avi" /> | ||
| 275 | + </biometric-signature> | ||
| 276 | + <biometric-signature name="handwaving21-4"> | ||
| 277 | + <presentation Label="handwaving" file-name="handwaving/person21_handwaving_d4_uncomp.avi" /> | ||
| 278 | + </biometric-signature> | ||
| 279 | + <biometric-signature name="handwaving22-1"> | ||
| 280 | + <presentation Label="handwaving" file-name="handwaving/person22_handwaving_d1_uncomp.avi" /> | ||
| 281 | + </biometric-signature> | ||
| 282 | + <biometric-signature name="handwaving22-2"> | ||
| 283 | + <presentation Label="handwaving" file-name="handwaving/person22_handwaving_d2_uncomp.avi" /> | ||
| 284 | + </biometric-signature> | ||
| 285 | + <biometric-signature name="handwaving22-3"> | ||
| 286 | + <presentation Label="handwaving" file-name="handwaving/person22_handwaving_d3_uncomp.avi" /> | ||
| 287 | + </biometric-signature> | ||
| 288 | + <biometric-signature name="handwaving22-4"> | ||
| 289 | + <presentation Label="handwaving" file-name="handwaving/person22_handwaving_d4_uncomp.avi" /> | ||
| 290 | + </biometric-signature> | ||
| 291 | + <biometric-signature name="handwaving23-1"> | ||
| 292 | + <presentation Label="handwaving" file-name="handwaving/person23_handwaving_d1_uncomp.avi" /> | ||
| 293 | + </biometric-signature> | ||
| 294 | + <biometric-signature name="handwaving23-2"> | ||
| 295 | + <presentation Label="handwaving" file-name="handwaving/person23_handwaving_d2_uncomp.avi" /> | ||
| 296 | + </biometric-signature> | ||
| 297 | + <biometric-signature name="handwaving23-3"> | ||
| 298 | + <presentation Label="handwaving" file-name="handwaving/person23_handwaving_d3_uncomp.avi" /> | ||
| 299 | + </biometric-signature> | ||
| 300 | + <biometric-signature name="handwaving23-4"> | ||
| 301 | + <presentation Label="handwaving" file-name="handwaving/person23_handwaving_d4_uncomp.avi" /> | ||
| 302 | + </biometric-signature> | ||
| 303 | + <biometric-signature name="handwaving24-1"> | ||
| 304 | + <presentation Label="handwaving" file-name="handwaving/person24_handwaving_d1_uncomp.avi" /> | ||
| 305 | + </biometric-signature> | ||
| 306 | + <biometric-signature name="handwaving24-2"> | ||
| 307 | + <presentation Label="handwaving" file-name="handwaving/person24_handwaving_d2_uncomp.avi" /> | ||
| 308 | + </biometric-signature> | ||
| 309 | + <biometric-signature name="handwaving24-3"> | ||
| 310 | + <presentation Label="handwaving" file-name="handwaving/person24_handwaving_d3_uncomp.avi" /> | ||
| 311 | + </biometric-signature> | ||
| 312 | + <biometric-signature name="handwaving24-4"> | ||
| 313 | + <presentation Label="handwaving" file-name="handwaving/person24_handwaving_d4_uncomp.avi" /> | ||
| 314 | + </biometric-signature> | ||
| 315 | + <biometric-signature name="handwaving25-1"> | ||
| 316 | + <presentation Label="handwaving" file-name="handwaving/person25_handwaving_d1_uncomp.avi" /> | ||
| 317 | + </biometric-signature> | ||
| 318 | + <biometric-signature name="handwaving25-2"> | ||
| 319 | + <presentation Label="handwaving" file-name="handwaving/person25_handwaving_d2_uncomp.avi" /> | ||
| 320 | + </biometric-signature> | ||
| 321 | + <biometric-signature name="handwaving25-3"> | ||
| 322 | + <presentation Label="handwaving" file-name="handwaving/person25_handwaving_d3_uncomp.avi" /> | ||
| 323 | + </biometric-signature> | ||
| 324 | + <biometric-signature name="handwaving25-4"> | ||
| 325 | + <presentation Label="handwaving" file-name="handwaving/person25_handwaving_d4_uncomp.avi" /> | ||
| 326 | + </biometric-signature> | ||
| 327 | + <biometric-signature name="jogging17-1"> | ||
| 328 | + <presentation Label="jogging" file-name="jogging/person17_jogging_d1_uncomp.avi" /> | ||
| 329 | + </biometric-signature> | ||
| 330 | + <biometric-signature name="jogging17-2"> | ||
| 331 | + <presentation Label="jogging" file-name="jogging/person17_jogging_d2_uncomp.avi" /> | ||
| 332 | + </biometric-signature> | ||
| 333 | + <biometric-signature name="jogging17-3"> | ||
| 334 | + <presentation Label="jogging" file-name="jogging/person17_jogging_d3_uncomp.avi" /> | ||
| 335 | + </biometric-signature> | ||
| 336 | + <biometric-signature name="jogging17-4"> | ||
| 337 | + <presentation Label="jogging" file-name="jogging/person17_jogging_d4_uncomp.avi" /> | ||
| 338 | + </biometric-signature> | ||
| 339 | + <biometric-signature name="jogging18-1"> | ||
| 340 | + <presentation Label="jogging" file-name="jogging/person18_jogging_d1_uncomp.avi" /> | ||
| 341 | + </biometric-signature> | ||
| 342 | + <biometric-signature name="jogging18-2"> | ||
| 343 | + <presentation Label="jogging" file-name="jogging/person18_jogging_d2_uncomp.avi" /> | ||
| 344 | + </biometric-signature> | ||
| 345 | + <biometric-signature name="jogging18-3"> | ||
| 346 | + <presentation Label="jogging" file-name="jogging/person18_jogging_d3_uncomp.avi" /> | ||
| 347 | + </biometric-signature> | ||
| 348 | + <biometric-signature name="jogging18-4"> | ||
| 349 | + <presentation Label="jogging" file-name="jogging/person18_jogging_d4_uncomp.avi" /> | ||
| 350 | + </biometric-signature> | ||
| 351 | + <biometric-signature name="jogging19-1"> | ||
| 352 | + <presentation Label="jogging" file-name="jogging/person19_jogging_d1_uncomp.avi" /> | ||
| 353 | + </biometric-signature> | ||
| 354 | + <biometric-signature name="jogging19-2"> | ||
| 355 | + <presentation Label="jogging" file-name="jogging/person19_jogging_d2_uncomp.avi" /> | ||
| 356 | + </biometric-signature> | ||
| 357 | + <biometric-signature name="jogging19-3"> | ||
| 358 | + <presentation Label="jogging" file-name="jogging/person19_jogging_d3_uncomp.avi" /> | ||
| 359 | + </biometric-signature> | ||
| 360 | + <biometric-signature name="jogging19-4"> | ||
| 361 | + <presentation Label="jogging" file-name="jogging/person19_jogging_d4_uncomp.avi" /> | ||
| 362 | + </biometric-signature> | ||
| 363 | + <biometric-signature name="jogging20-1"> | ||
| 364 | + <presentation Label="jogging" file-name="jogging/person20_jogging_d1_uncomp.avi" /> | ||
| 365 | + </biometric-signature> | ||
| 366 | + <biometric-signature name="jogging20-2"> | ||
| 367 | + <presentation Label="jogging" file-name="jogging/person20_jogging_d2_uncomp.avi" /> | ||
| 368 | + </biometric-signature> | ||
| 369 | + <biometric-signature name="jogging20-3"> | ||
| 370 | + <presentation Label="jogging" file-name="jogging/person20_jogging_d3_uncomp.avi" /> | ||
| 371 | + </biometric-signature> | ||
| 372 | + <biometric-signature name="jogging20-4"> | ||
| 373 | + <presentation Label="jogging" file-name="jogging/person20_jogging_d4_uncomp.avi" /> | ||
| 374 | + </biometric-signature> | ||
| 375 | + <biometric-signature name="jogging21-1"> | ||
| 376 | + <presentation Label="jogging" file-name="jogging/person21_jogging_d1_uncomp.avi" /> | ||
| 377 | + </biometric-signature> | ||
| 378 | + <biometric-signature name="jogging21-2"> | ||
| 379 | + <presentation Label="jogging" file-name="jogging/person21_jogging_d2_uncomp.avi" /> | ||
| 380 | + </biometric-signature> | ||
| 381 | + <biometric-signature name="jogging21-3"> | ||
| 382 | + <presentation Label="jogging" file-name="jogging/person21_jogging_d3_uncomp.avi" /> | ||
| 383 | + </biometric-signature> | ||
| 384 | + <biometric-signature name="jogging21-4"> | ||
| 385 | + <presentation Label="jogging" file-name="jogging/person21_jogging_d4_uncomp.avi" /> | ||
| 386 | + </biometric-signature> | ||
| 387 | + <biometric-signature name="jogging22-1"> | ||
| 388 | + <presentation Label="jogging" file-name="jogging/person22_jogging_d1_uncomp.avi" /> | ||
| 389 | + </biometric-signature> | ||
| 390 | + <biometric-signature name="jogging22-2"> | ||
| 391 | + <presentation Label="jogging" file-name="jogging/person22_jogging_d2_uncomp.avi" /> | ||
| 392 | + </biometric-signature> | ||
| 393 | + <biometric-signature name="jogging22-3"> | ||
| 394 | + <presentation Label="jogging" file-name="jogging/person22_jogging_d3_uncomp.avi" /> | ||
| 395 | + </biometric-signature> | ||
| 396 | + <biometric-signature name="jogging22-4"> | ||
| 397 | + <presentation Label="jogging" file-name="jogging/person22_jogging_d4_uncomp.avi" /> | ||
| 398 | + </biometric-signature> | ||
| 399 | + <biometric-signature name="jogging23-1"> | ||
| 400 | + <presentation Label="jogging" file-name="jogging/person23_jogging_d1_uncomp.avi" /> | ||
| 401 | + </biometric-signature> | ||
| 402 | + <biometric-signature name="jogging23-2"> | ||
| 403 | + <presentation Label="jogging" file-name="jogging/person23_jogging_d2_uncomp.avi" /> | ||
| 404 | + </biometric-signature> | ||
| 405 | + <biometric-signature name="jogging23-3"> | ||
| 406 | + <presentation Label="jogging" file-name="jogging/person23_jogging_d3_uncomp.avi" /> | ||
| 407 | + </biometric-signature> | ||
| 408 | + <biometric-signature name="jogging23-4"> | ||
| 409 | + <presentation Label="jogging" file-name="jogging/person23_jogging_d4_uncomp.avi" /> | ||
| 410 | + </biometric-signature> | ||
| 411 | + <biometric-signature name="jogging24-1"> | ||
| 412 | + <presentation Label="jogging" file-name="jogging/person24_jogging_d1_uncomp.avi" /> | ||
| 413 | + </biometric-signature> | ||
| 414 | + <biometric-signature name="jogging24-2"> | ||
| 415 | + <presentation Label="jogging" file-name="jogging/person24_jogging_d2_uncomp.avi" /> | ||
| 416 | + </biometric-signature> | ||
| 417 | + <biometric-signature name="jogging24-3"> | ||
| 418 | + <presentation Label="jogging" file-name="jogging/person24_jogging_d3_uncomp.avi" /> | ||
| 419 | + </biometric-signature> | ||
| 420 | + <biometric-signature name="jogging24-4"> | ||
| 421 | + <presentation Label="jogging" file-name="jogging/person24_jogging_d4_uncomp.avi" /> | ||
| 422 | + </biometric-signature> | ||
| 423 | + <biometric-signature name="jogging25-1"> | ||
| 424 | + <presentation Label="jogging" file-name="jogging/person25_jogging_d1_uncomp.avi" /> | ||
| 425 | + </biometric-signature> | ||
| 426 | + <biometric-signature name="jogging25-2"> | ||
| 427 | + <presentation Label="jogging" file-name="jogging/person25_jogging_d2_uncomp.avi" /> | ||
| 428 | + </biometric-signature> | ||
| 429 | + <biometric-signature name="jogging25-3"> | ||
| 430 | + <presentation Label="jogging" file-name="jogging/person25_jogging_d3_uncomp.avi" /> | ||
| 431 | + </biometric-signature> | ||
| 432 | + <biometric-signature name="jogging25-4"> | ||
| 433 | + <presentation Label="jogging" file-name="jogging/person25_jogging_d4_uncomp.avi" /> | ||
| 434 | + </biometric-signature> | ||
| 435 | + <biometric-signature name="running17-1"> | ||
| 436 | + <presentation Label="running" file-name="running/person17_running_d1_uncomp.avi" /> | ||
| 437 | + </biometric-signature> | ||
| 438 | + <biometric-signature name="running17-2"> | ||
| 439 | + <presentation Label="running" file-name="running/person17_running_d2_uncomp.avi" /> | ||
| 440 | + </biometric-signature> | ||
| 441 | + <biometric-signature name="running17-3"> | ||
| 442 | + <presentation Label="running" file-name="running/person17_running_d3_uncomp.avi" /> | ||
| 443 | + </biometric-signature> | ||
| 444 | + <biometric-signature name="running17-4"> | ||
| 445 | + <presentation Label="running" file-name="running/person17_running_d4_uncomp.avi" /> | ||
| 446 | + </biometric-signature> | ||
| 447 | + <biometric-signature name="running18-1"> | ||
| 448 | + <presentation Label="running" file-name="running/person18_running_d1_uncomp.avi" /> | ||
| 449 | + </biometric-signature> | ||
| 450 | + <biometric-signature name="running18-2"> | ||
| 451 | + <presentation Label="running" file-name="running/person18_running_d2_uncomp.avi" /> | ||
| 452 | + </biometric-signature> | ||
| 453 | + <biometric-signature name="running18-3"> | ||
| 454 | + <presentation Label="running" file-name="running/person18_running_d3_uncomp.avi" /> | ||
| 455 | + </biometric-signature> | ||
| 456 | + <biometric-signature name="running18-4"> | ||
| 457 | + <presentation Label="running" file-name="running/person18_running_d4_uncomp.avi" /> | ||
| 458 | + </biometric-signature> | ||
| 459 | + <biometric-signature name="running19-1"> | ||
| 460 | + <presentation Label="running" file-name="running/person19_running_d1_uncomp.avi" /> | ||
| 461 | + </biometric-signature> | ||
| 462 | + <biometric-signature name="running19-2"> | ||
| 463 | + <presentation Label="running" file-name="running/person19_running_d2_uncomp.avi" /> | ||
| 464 | + </biometric-signature> | ||
| 465 | + <biometric-signature name="running19-3"> | ||
| 466 | + <presentation Label="running" file-name="running/person19_running_d3_uncomp.avi" /> | ||
| 467 | + </biometric-signature> | ||
| 468 | + <biometric-signature name="running19-4"> | ||
| 469 | + <presentation Label="running" file-name="running/person19_running_d4_uncomp.avi" /> | ||
| 470 | + </biometric-signature> | ||
| 471 | + <biometric-signature name="running20-1"> | ||
| 472 | + <presentation Label="running" file-name="running/person20_running_d1_uncomp.avi" /> | ||
| 473 | + </biometric-signature> | ||
| 474 | + <biometric-signature name="running20-2"> | ||
| 475 | + <presentation Label="running" file-name="running/person20_running_d2_uncomp.avi" /> | ||
| 476 | + </biometric-signature> | ||
| 477 | + <biometric-signature name="running20-3"> | ||
| 478 | + <presentation Label="running" file-name="running/person20_running_d3_uncomp.avi" /> | ||
| 479 | + </biometric-signature> | ||
| 480 | + <biometric-signature name="running20-4"> | ||
| 481 | + <presentation Label="running" file-name="running/person20_running_d4_uncomp.avi" /> | ||
| 482 | + </biometric-signature> | ||
| 483 | + <biometric-signature name="running21-1"> | ||
| 484 | + <presentation Label="running" file-name="running/person21_running_d1_uncomp.avi" /> | ||
| 485 | + </biometric-signature> | ||
| 486 | + <biometric-signature name="running21-2"> | ||
| 487 | + <presentation Label="running" file-name="running/person21_running_d2_uncomp.avi" /> | ||
| 488 | + </biometric-signature> | ||
| 489 | + <biometric-signature name="running21-3"> | ||
| 490 | + <presentation Label="running" file-name="running/person21_running_d3_uncomp.avi" /> | ||
| 491 | + </biometric-signature> | ||
| 492 | + <biometric-signature name="running21-4"> | ||
| 493 | + <presentation Label="running" file-name="running/person21_running_d4_uncomp.avi" /> | ||
| 494 | + </biometric-signature> | ||
| 495 | + <biometric-signature name="running22-1"> | ||
| 496 | + <presentation Label="running" file-name="running/person22_running_d1_uncomp.avi" /> | ||
| 497 | + </biometric-signature> | ||
| 498 | + <biometric-signature name="running22-2"> | ||
| 499 | + <presentation Label="running" file-name="running/person22_running_d2_uncomp.avi" /> | ||
| 500 | + </biometric-signature> | ||
| 501 | + <biometric-signature name="running22-3"> | ||
| 502 | + <presentation Label="running" file-name="running/person22_running_d3_uncomp.avi" /> | ||
| 503 | + </biometric-signature> | ||
| 504 | + <biometric-signature name="running22-4"> | ||
| 505 | + <presentation Label="running" file-name="running/person22_running_d4_uncomp.avi" /> | ||
| 506 | + </biometric-signature> | ||
| 507 | + <biometric-signature name="running23-1"> | ||
| 508 | + <presentation Label="running" file-name="running/person23_running_d1_uncomp.avi" /> | ||
| 509 | + </biometric-signature> | ||
| 510 | + <biometric-signature name="running23-2"> | ||
| 511 | + <presentation Label="running" file-name="running/person23_running_d2_uncomp.avi" /> | ||
| 512 | + </biometric-signature> | ||
| 513 | + <biometric-signature name="running23-3"> | ||
| 514 | + <presentation Label="running" file-name="running/person23_running_d3_uncomp.avi" /> | ||
| 515 | + </biometric-signature> | ||
| 516 | + <biometric-signature name="running23-4"> | ||
| 517 | + <presentation Label="running" file-name="running/person23_running_d4_uncomp.avi" /> | ||
| 518 | + </biometric-signature> | ||
| 519 | + <biometric-signature name="running24-1"> | ||
| 520 | + <presentation Label="running" file-name="running/person24_running_d1_uncomp.avi" /> | ||
| 521 | + </biometric-signature> | ||
| 522 | + <biometric-signature name="running24-2"> | ||
| 523 | + <presentation Label="running" file-name="running/person24_running_d2_uncomp.avi" /> | ||
| 524 | + </biometric-signature> | ||
| 525 | + <biometric-signature name="running24-3"> | ||
| 526 | + <presentation Label="running" file-name="running/person24_running_d3_uncomp.avi" /> | ||
| 527 | + </biometric-signature> | ||
| 528 | + <biometric-signature name="running24-4"> | ||
| 529 | + <presentation Label="running" file-name="running/person24_running_d4_uncomp.avi" /> | ||
| 530 | + </biometric-signature> | ||
| 531 | + <biometric-signature name="running25-1"> | ||
| 532 | + <presentation Label="running" file-name="running/person25_running_d1_uncomp.avi" /> | ||
| 533 | + </biometric-signature> | ||
| 534 | + <biometric-signature name="running25-2"> | ||
| 535 | + <presentation Label="running" file-name="running/person25_running_d2_uncomp.avi" /> | ||
| 536 | + </biometric-signature> | ||
| 537 | + <biometric-signature name="running25-3"> | ||
| 538 | + <presentation Label="running" file-name="running/person25_running_d3_uncomp.avi" /> | ||
| 539 | + </biometric-signature> | ||
| 540 | + <biometric-signature name="running25-4"> | ||
| 541 | + <presentation Label="running" file-name="running/person25_running_d4_uncomp.avi" /> | ||
| 542 | + </biometric-signature> | ||
| 543 | + <biometric-signature name="walking17-1"> | ||
| 544 | + <presentation Label="walking" file-name="walking/person17_walking_d1_uncomp.avi" /> | ||
| 545 | + </biometric-signature> | ||
| 546 | + <biometric-signature name="walking17-2"> | ||
| 547 | + <presentation Label="walking" file-name="walking/person17_walking_d2_uncomp.avi" /> | ||
| 548 | + </biometric-signature> | ||
| 549 | + <biometric-signature name="walking17-3"> | ||
| 550 | + <presentation Label="walking" file-name="walking/person17_walking_d3_uncomp.avi" /> | ||
| 551 | + </biometric-signature> | ||
| 552 | + <biometric-signature name="walking17-4"> | ||
| 553 | + <presentation Label="walking" file-name="walking/person17_walking_d4_uncomp.avi" /> | ||
| 554 | + </biometric-signature> | ||
| 555 | + <biometric-signature name="walking18-1"> | ||
| 556 | + <presentation Label="walking" file-name="walking/person18_walking_d1_uncomp.avi" /> | ||
| 557 | + </biometric-signature> | ||
| 558 | + <biometric-signature name="walking18-2"> | ||
| 559 | + <presentation Label="walking" file-name="walking/person18_walking_d2_uncomp.avi" /> | ||
| 560 | + </biometric-signature> | ||
| 561 | + <biometric-signature name="walking18-3"> | ||
| 562 | + <presentation Label="walking" file-name="walking/person18_walking_d3_uncomp.avi" /> | ||
| 563 | + </biometric-signature> | ||
| 564 | + <biometric-signature name="walking18-4"> | ||
| 565 | + <presentation Label="walking" file-name="walking/person18_walking_d4_uncomp.avi" /> | ||
| 566 | + </biometric-signature> | ||
| 567 | + <biometric-signature name="walking19-1"> | ||
| 568 | + <presentation Label="walking" file-name="walking/person19_walking_d1_uncomp.avi" /> | ||
| 569 | + </biometric-signature> | ||
| 570 | + <biometric-signature name="walking19-2"> | ||
| 571 | + <presentation Label="walking" file-name="walking/person19_walking_d2_uncomp.avi" /> | ||
| 572 | + </biometric-signature> | ||
| 573 | + <biometric-signature name="walking19-3"> | ||
| 574 | + <presentation Label="walking" file-name="walking/person19_walking_d3_uncomp.avi" /> | ||
| 575 | + </biometric-signature> | ||
| 576 | + <biometric-signature name="walking19-4"> | ||
| 577 | + <presentation Label="walking" file-name="walking/person19_walking_d4_uncomp.avi" /> | ||
| 578 | + </biometric-signature> | ||
| 579 | + <biometric-signature name="walking20-1"> | ||
| 580 | + <presentation Label="walking" file-name="walking/person20_walking_d1_uncomp.avi" /> | ||
| 581 | + </biometric-signature> | ||
| 582 | + <biometric-signature name="walking20-2"> | ||
| 583 | + <presentation Label="walking" file-name="walking/person20_walking_d2_uncomp.avi" /> | ||
| 584 | + </biometric-signature> | ||
| 585 | + <biometric-signature name="walking20-3"> | ||
| 586 | + <presentation Label="walking" file-name="walking/person20_walking_d3_uncomp.avi" /> | ||
| 587 | + </biometric-signature> | ||
| 588 | + <biometric-signature name="walking20-4"> | ||
| 589 | + <presentation Label="walking" file-name="walking/person20_walking_d4_uncomp.avi" /> | ||
| 590 | + </biometric-signature> | ||
| 591 | + <biometric-signature name="walking21-1"> | ||
| 592 | + <presentation Label="walking" file-name="walking/person21_walking_d1_uncomp.avi" /> | ||
| 593 | + </biometric-signature> | ||
| 594 | + <biometric-signature name="walking21-2"> | ||
| 595 | + <presentation Label="walking" file-name="walking/person21_walking_d2_uncomp.avi" /> | ||
| 596 | + </biometric-signature> | ||
| 597 | + <biometric-signature name="walking21-3"> | ||
| 598 | + <presentation Label="walking" file-name="walking/person21_walking_d3_uncomp.avi" /> | ||
| 599 | + </biometric-signature> | ||
| 600 | + <biometric-signature name="walking21-4"> | ||
| 601 | + <presentation Label="walking" file-name="walking/person21_walking_d4_uncomp.avi" /> | ||
| 602 | + </biometric-signature> | ||
| 603 | + <biometric-signature name="walking22-1"> | ||
| 604 | + <presentation Label="walking" file-name="walking/person22_walking_d1_uncomp.avi" /> | ||
| 605 | + </biometric-signature> | ||
| 606 | + <biometric-signature name="walking22-2"> | ||
| 607 | + <presentation Label="walking" file-name="walking/person22_walking_d2_uncomp.avi" /> | ||
| 608 | + </biometric-signature> | ||
| 609 | + <biometric-signature name="walking22-3"> | ||
| 610 | + <presentation Label="walking" file-name="walking/person22_walking_d3_uncomp.avi" /> | ||
| 611 | + </biometric-signature> | ||
| 612 | + <biometric-signature name="walking22-4"> | ||
| 613 | + <presentation Label="walking" file-name="walking/person22_walking_d4_uncomp.avi" /> | ||
| 614 | + </biometric-signature> | ||
| 615 | + <biometric-signature name="walking23-1"> | ||
| 616 | + <presentation Label="walking" file-name="walking/person23_walking_d1_uncomp.avi" /> | ||
| 617 | + </biometric-signature> | ||
| 618 | + <biometric-signature name="walking23-2"> | ||
| 619 | + <presentation Label="walking" file-name="walking/person23_walking_d2_uncomp.avi" /> | ||
| 620 | + </biometric-signature> | ||
| 621 | + <biometric-signature name="walking23-3"> | ||
| 622 | + <presentation Label="walking" file-name="walking/person23_walking_d3_uncomp.avi" /> | ||
| 623 | + </biometric-signature> | ||
| 624 | + <biometric-signature name="walking23-4"> | ||
| 625 | + <presentation Label="walking" file-name="walking/person23_walking_d4_uncomp.avi" /> | ||
| 626 | + </biometric-signature> | ||
| 627 | + <biometric-signature name="walking24-1"> | ||
| 628 | + <presentation Label="walking" file-name="walking/person24_walking_d1_uncomp.avi" /> | ||
| 629 | + </biometric-signature> | ||
| 630 | + <biometric-signature name="walking24-2"> | ||
| 631 | + <presentation Label="walking" file-name="walking/person24_walking_d2_uncomp.avi" /> | ||
| 632 | + </biometric-signature> | ||
| 633 | + <biometric-signature name="walking24-3"> | ||
| 634 | + <presentation Label="walking" file-name="walking/person24_walking_d3_uncomp.avi" /> | ||
| 635 | + </biometric-signature> | ||
| 636 | + <biometric-signature name="walking24-4"> | ||
| 637 | + <presentation Label="walking" file-name="walking/person24_walking_d4_uncomp.avi" /> | ||
| 638 | + </biometric-signature> | ||
| 639 | + <biometric-signature name="walking25-1"> | ||
| 640 | + <presentation Label="walking" file-name="walking/person25_walking_d1_uncomp.avi" /> | ||
| 641 | + </biometric-signature> | ||
| 642 | + <biometric-signature name="walking25-2"> | ||
| 643 | + <presentation Label="walking" file-name="walking/person25_walking_d2_uncomp.avi" /> | ||
| 644 | + </biometric-signature> | ||
| 645 | + <biometric-signature name="walking25-3"> | ||
| 646 | + <presentation Label="walking" file-name="walking/person25_walking_d3_uncomp.avi" /> | ||
| 647 | + </biometric-signature> | ||
| 648 | + <biometric-signature name="walking25-4"> | ||
| 649 | + <presentation Label="walking" file-name="walking/person25_walking_d4_uncomp.avi" /> | ||
| 650 | + </biometric-signature> | ||
| 651 | +</biometric-signature-set> |
data/KTH/train_16ppl.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<biometric-signature-set> | ||
| 3 | + <biometric-signature name="boxing1-1"> | ||
| 4 | + <presentation Label="boxing" file-name="boxing/person01_boxing_d1_uncomp.avi" /> | ||
| 5 | + </biometric-signature> | ||
| 6 | + <biometric-signature name="boxing1-2"> | ||
| 7 | + <presentation Label="boxing" file-name="boxing/person01_boxing_d2_uncomp.avi" /> | ||
| 8 | + </biometric-signature> | ||
| 9 | + <biometric-signature name="boxing1-3"> | ||
| 10 | + <presentation Label="boxing" file-name="boxing/person01_boxing_d3_uncomp.avi" /> | ||
| 11 | + </biometric-signature> | ||
| 12 | + <biometric-signature name="boxing2-1"> | ||
| 13 | + <presentation Label="boxing" file-name="boxing/person02_boxing_d1_uncomp.avi" /> | ||
| 14 | + </biometric-signature> | ||
| 15 | + <biometric-signature name="boxing2-2"> | ||
| 16 | + <presentation Label="boxing" file-name="boxing/person02_boxing_d2_uncomp.avi" /> | ||
| 17 | + </biometric-signature> | ||
| 18 | + <biometric-signature name="boxing2-3"> | ||
| 19 | + <presentation Label="boxing" file-name="boxing/person02_boxing_d3_uncomp.avi" /> | ||
| 20 | + </biometric-signature> | ||
| 21 | + <biometric-signature name="boxing2-4"> | ||
| 22 | + <presentation Label="boxing" file-name="boxing/person02_boxing_d4_uncomp.avi" /> | ||
| 23 | + </biometric-signature> | ||
| 24 | + <biometric-signature name="boxing3-1"> | ||
| 25 | + <presentation Label="boxing" file-name="boxing/person03_boxing_d1_uncomp.avi" /> | ||
| 26 | + </biometric-signature> | ||
| 27 | + <biometric-signature name="boxing3-2"> | ||
| 28 | + <presentation Label="boxing" file-name="boxing/person03_boxing_d2_uncomp.avi" /> | ||
| 29 | + </biometric-signature> | ||
| 30 | + <biometric-signature name="boxing3-3"> | ||
| 31 | + <presentation Label="boxing" file-name="boxing/person03_boxing_d3_uncomp.avi" /> | ||
| 32 | + </biometric-signature> | ||
| 33 | + <biometric-signature name="boxing3-4"> | ||
| 34 | + <presentation Label="boxing" file-name="boxing/person03_boxing_d4_uncomp.avi" /> | ||
| 35 | + </biometric-signature> | ||
| 36 | + <biometric-signature name="boxing4-1"> | ||
| 37 | + <presentation Label="boxing" file-name="boxing/person04_boxing_d1_uncomp.avi" /> | ||
| 38 | + </biometric-signature> | ||
| 39 | + <biometric-signature name="boxing4-2"> | ||
| 40 | + <presentation Label="boxing" file-name="boxing/person04_boxing_d2_uncomp.avi" /> | ||
| 41 | + </biometric-signature> | ||
| 42 | + <biometric-signature name="boxing4-3"> | ||
| 43 | + <presentation Label="boxing" file-name="boxing/person04_boxing_d3_uncomp.avi" /> | ||
| 44 | + </biometric-signature> | ||
| 45 | + <biometric-signature name="boxing4-4"> | ||
| 46 | + <presentation Label="boxing" file-name="boxing/person04_boxing_d4_uncomp.avi" /> | ||
| 47 | + </biometric-signature> | ||
| 48 | + <biometric-signature name="boxing5-1"> | ||
| 49 | + <presentation Label="boxing" file-name="boxing/person05_boxing_d1_uncomp.avi" /> | ||
| 50 | + </biometric-signature> | ||
| 51 | + <biometric-signature name="boxing5-2"> | ||
| 52 | + <presentation Label="boxing" file-name="boxing/person05_boxing_d2_uncomp.avi" /> | ||
| 53 | + </biometric-signature> | ||
| 54 | + <biometric-signature name="boxing5-3"> | ||
| 55 | + <presentation Label="boxing" file-name="boxing/person05_boxing_d3_uncomp.avi" /> | ||
| 56 | + </biometric-signature> | ||
| 57 | + <biometric-signature name="boxing5-4"> | ||
| 58 | + <presentation Label="boxing" file-name="boxing/person05_boxing_d4_uncomp.avi" /> | ||
| 59 | + </biometric-signature> | ||
| 60 | + <biometric-signature name="boxing6-1"> | ||
| 61 | + <presentation Label="boxing" file-name="boxing/person06_boxing_d1_uncomp.avi" /> | ||
| 62 | + </biometric-signature> | ||
| 63 | + <biometric-signature name="boxing6-2"> | ||
| 64 | + <presentation Label="boxing" file-name="boxing/person06_boxing_d2_uncomp.avi" /> | ||
| 65 | + </biometric-signature> | ||
| 66 | + <biometric-signature name="boxing6-3"> | ||
| 67 | + <presentation Label="boxing" file-name="boxing/person06_boxing_d3_uncomp.avi" /> | ||
| 68 | + </biometric-signature> | ||
| 69 | + <biometric-signature name="boxing6-4"> | ||
| 70 | + <presentation Label="boxing" file-name="boxing/person06_boxing_d4_uncomp.avi" /> | ||
| 71 | + </biometric-signature> | ||
| 72 | + <biometric-signature name="boxing7-1"> | ||
| 73 | + <presentation Label="boxing" file-name="boxing/person07_boxing_d1_uncomp.avi" /> | ||
| 74 | + </biometric-signature> | ||
| 75 | + <biometric-signature name="boxing7-2"> | ||
| 76 | + <presentation Label="boxing" file-name="boxing/person07_boxing_d2_uncomp.avi" /> | ||
| 77 | + </biometric-signature> | ||
| 78 | + <biometric-signature name="boxing7-3"> | ||
| 79 | + <presentation Label="boxing" file-name="boxing/person07_boxing_d3_uncomp.avi" /> | ||
| 80 | + </biometric-signature> | ||
| 81 | + <biometric-signature name="boxing7-4"> | ||
| 82 | + <presentation Label="boxing" file-name="boxing/person07_boxing_d4_uncomp.avi" /> | ||
| 83 | + </biometric-signature> | ||
| 84 | + <biometric-signature name="boxing8-1"> | ||
| 85 | + <presentation Label="boxing" file-name="boxing/person08_boxing_d1_uncomp.avi" /> | ||
| 86 | + </biometric-signature> | ||
| 87 | + <biometric-signature name="boxing8-2"> | ||
| 88 | + <presentation Label="boxing" file-name="boxing/person08_boxing_d2_uncomp.avi" /> | ||
| 89 | + </biometric-signature> | ||
| 90 | + <biometric-signature name="boxing8-3"> | ||
| 91 | + <presentation Label="boxing" file-name="boxing/person08_boxing_d3_uncomp.avi" /> | ||
| 92 | + </biometric-signature> | ||
| 93 | + <biometric-signature name="boxing8-4"> | ||
| 94 | + <presentation Label="boxing" file-name="boxing/person08_boxing_d4_uncomp.avi" /> | ||
| 95 | + </biometric-signature> | ||
| 96 | + <biometric-signature name="boxing9-1"> | ||
| 97 | + <presentation Label="boxing" file-name="boxing/person09_boxing_d1_uncomp.avi" /> | ||
| 98 | + </biometric-signature> | ||
| 99 | + <biometric-signature name="boxing9-2"> | ||
| 100 | + <presentation Label="boxing" file-name="boxing/person09_boxing_d2_uncomp.avi" /> | ||
| 101 | + </biometric-signature> | ||
| 102 | + <biometric-signature name="boxing9-3"> | ||
| 103 | + <presentation Label="boxing" file-name="boxing/person09_boxing_d3_uncomp.avi" /> | ||
| 104 | + </biometric-signature> | ||
| 105 | + <biometric-signature name="boxing9-4"> | ||
| 106 | + <presentation Label="boxing" file-name="boxing/person09_boxing_d4_uncomp.avi" /> | ||
| 107 | + </biometric-signature> | ||
| 108 | + <biometric-signature name="boxing10-1"> | ||
| 109 | + <presentation Label="boxing" file-name="boxing/person10_boxing_d1_uncomp.avi" /> | ||
| 110 | + </biometric-signature> | ||
| 111 | + <biometric-signature name="boxing10-2"> | ||
| 112 | + <presentation Label="boxing" file-name="boxing/person10_boxing_d2_uncomp.avi" /> | ||
| 113 | + </biometric-signature> | ||
| 114 | + <biometric-signature name="boxing10-3"> | ||
| 115 | + <presentation Label="boxing" file-name="boxing/person10_boxing_d3_uncomp.avi" /> | ||
| 116 | + </biometric-signature> | ||
| 117 | + <biometric-signature name="boxing10-4"> | ||
| 118 | + <presentation Label="boxing" file-name="boxing/person10_boxing_d4_uncomp.avi" /> | ||
| 119 | + </biometric-signature> | ||
| 120 | + <biometric-signature name="boxing11-1"> | ||
| 121 | + <presentation Label="boxing" file-name="boxing/person11_boxing_d1_uncomp.avi" /> | ||
| 122 | + </biometric-signature> | ||
| 123 | + <biometric-signature name="boxing11-2"> | ||
| 124 | + <presentation Label="boxing" file-name="boxing/person11_boxing_d2_uncomp.avi" /> | ||
| 125 | + </biometric-signature> | ||
| 126 | + <biometric-signature name="boxing11-3"> | ||
| 127 | + <presentation Label="boxing" file-name="boxing/person11_boxing_d3_uncomp.avi" /> | ||
| 128 | + </biometric-signature> | ||
| 129 | + <biometric-signature name="boxing11-4"> | ||
| 130 | + <presentation Label="boxing" file-name="boxing/person11_boxing_d4_uncomp.avi" /> | ||
| 131 | + </biometric-signature> | ||
| 132 | + <biometric-signature name="boxing12-1"> | ||
| 133 | + <presentation Label="boxing" file-name="boxing/person12_boxing_d1_uncomp.avi" /> | ||
| 134 | + </biometric-signature> | ||
| 135 | + <biometric-signature name="boxing12-2"> | ||
| 136 | + <presentation Label="boxing" file-name="boxing/person12_boxing_d2_uncomp.avi" /> | ||
| 137 | + </biometric-signature> | ||
| 138 | + <biometric-signature name="boxing12-3"> | ||
| 139 | + <presentation Label="boxing" file-name="boxing/person12_boxing_d3_uncomp.avi" /> | ||
| 140 | + </biometric-signature> | ||
| 141 | + <biometric-signature name="boxing12-4"> | ||
| 142 | + <presentation Label="boxing" file-name="boxing/person12_boxing_d4_uncomp.avi" /> | ||
| 143 | + </biometric-signature> | ||
| 144 | + <biometric-signature name="boxing13-1"> | ||
| 145 | + <presentation Label="boxing" file-name="boxing/person13_boxing_d1_uncomp.avi" /> | ||
| 146 | + </biometric-signature> | ||
| 147 | + <biometric-signature name="boxing13-2"> | ||
| 148 | + <presentation Label="boxing" file-name="boxing/person13_boxing_d2_uncomp.avi" /> | ||
| 149 | + </biometric-signature> | ||
| 150 | + <biometric-signature name="boxing13-3"> | ||
| 151 | + <presentation Label="boxing" file-name="boxing/person13_boxing_d3_uncomp.avi" /> | ||
| 152 | + </biometric-signature> | ||
| 153 | + <biometric-signature name="boxing13-4"> | ||
| 154 | + <presentation Label="boxing" file-name="boxing/person13_boxing_d4_uncomp.avi" /> | ||
| 155 | + </biometric-signature> | ||
| 156 | + <biometric-signature name="boxing14-1"> | ||
| 157 | + <presentation Label="boxing" file-name="boxing/person14_boxing_d1_uncomp.avi" /> | ||
| 158 | + </biometric-signature> | ||
| 159 | + <biometric-signature name="boxing14-2"> | ||
| 160 | + <presentation Label="boxing" file-name="boxing/person14_boxing_d2_uncomp.avi" /> | ||
| 161 | + </biometric-signature> | ||
| 162 | + <biometric-signature name="boxing14-3"> | ||
| 163 | + <presentation Label="boxing" file-name="boxing/person14_boxing_d3_uncomp.avi" /> | ||
| 164 | + </biometric-signature> | ||
| 165 | + <biometric-signature name="boxing14-4"> | ||
| 166 | + <presentation Label="boxing" file-name="boxing/person14_boxing_d4_uncomp.avi" /> | ||
| 167 | + </biometric-signature> | ||
| 168 | + <biometric-signature name="boxing15-1"> | ||
| 169 | + <presentation Label="boxing" file-name="boxing/person15_boxing_d1_uncomp.avi" /> | ||
| 170 | + </biometric-signature> | ||
| 171 | + <biometric-signature name="boxing15-2"> | ||
| 172 | + <presentation Label="boxing" file-name="boxing/person15_boxing_d2_uncomp.avi" /> | ||
| 173 | + </biometric-signature> | ||
| 174 | + <biometric-signature name="boxing15-3"> | ||
| 175 | + <presentation Label="boxing" file-name="boxing/person15_boxing_d3_uncomp.avi" /> | ||
| 176 | + </biometric-signature> | ||
| 177 | + <biometric-signature name="boxing15-4"> | ||
| 178 | + <presentation Label="boxing" file-name="boxing/person15_boxing_d4_uncomp.avi" /> | ||
| 179 | + </biometric-signature> | ||
| 180 | + <biometric-signature name="boxing16-1"> | ||
| 181 | + <presentation Label="boxing" file-name="boxing/person16_boxing_d1_uncomp.avi" /> | ||
| 182 | + </biometric-signature> | ||
| 183 | + <biometric-signature name="boxing16-2"> | ||
| 184 | + <presentation Label="boxing" file-name="boxing/person16_boxing_d2_uncomp.avi" /> | ||
| 185 | + </biometric-signature> | ||
| 186 | + <biometric-signature name="boxing16-3"> | ||
| 187 | + <presentation Label="boxing" file-name="boxing/person16_boxing_d3_uncomp.avi" /> | ||
| 188 | + </biometric-signature> | ||
| 189 | + <biometric-signature name="boxing16-4"> | ||
| 190 | + <presentation Label="boxing" file-name="boxing/person16_boxing_d4_uncomp.avi" /> | ||
| 191 | + </biometric-signature> | ||
| 192 | + <biometric-signature name="handclapping1-1"> | ||
| 193 | + <presentation Label="handclapping" file-name="handclapping/person01_handclapping_d1_uncomp.avi" /> | ||
| 194 | + </biometric-signature> | ||
| 195 | + <biometric-signature name="handclapping1-2"> | ||
| 196 | + <presentation Label="handclapping" file-name="handclapping/person01_handclapping_d2_uncomp.avi" /> | ||
| 197 | + </biometric-signature> | ||
| 198 | + <biometric-signature name="handclapping1-3"> | ||
| 199 | + <presentation Label="handclapping" file-name="handclapping/person01_handclapping_d3_uncomp.avi" /> | ||
| 200 | + </biometric-signature> | ||
| 201 | + <biometric-signature name="handclapping1-4"> | ||
| 202 | + <presentation Label="handclapping" file-name="handclapping/person01_handclapping_d4_uncomp.avi" /> | ||
| 203 | + </biometric-signature> | ||
| 204 | + <biometric-signature name="handclapping2-1"> | ||
| 205 | + <presentation Label="handclapping" file-name="handclapping/person02_handclapping_d1_uncomp.avi" /> | ||
| 206 | + </biometric-signature> | ||
| 207 | + <biometric-signature name="handclapping2-2"> | ||
| 208 | + <presentation Label="handclapping" file-name="handclapping/person02_handclapping_d2_uncomp.avi" /> | ||
| 209 | + </biometric-signature> | ||
| 210 | + <biometric-signature name="handclapping2-3"> | ||
| 211 | + <presentation Label="handclapping" file-name="handclapping/person02_handclapping_d3_uncomp.avi" /> | ||
| 212 | + </biometric-signature> | ||
| 213 | + <biometric-signature name="handclapping2-4"> | ||
| 214 | + <presentation Label="handclapping" file-name="handclapping/person02_handclapping_d4_uncomp.avi" /> | ||
| 215 | + </biometric-signature> | ||
| 216 | + <biometric-signature name="handclapping3-1"> | ||
| 217 | + <presentation Label="handclapping" file-name="handclapping/person03_handclapping_d1_uncomp.avi" /> | ||
| 218 | + </biometric-signature> | ||
| 219 | + <biometric-signature name="handclapping3-2"> | ||
| 220 | + <presentation Label="handclapping" file-name="handclapping/person03_handclapping_d2_uncomp.avi" /> | ||
| 221 | + </biometric-signature> | ||
| 222 | + <biometric-signature name="handclapping3-3"> | ||
| 223 | + <presentation Label="handclapping" file-name="handclapping/person03_handclapping_d3_uncomp.avi" /> | ||
| 224 | + </biometric-signature> | ||
| 225 | + <biometric-signature name="handclapping3-4"> | ||
| 226 | + <presentation Label="handclapping" file-name="handclapping/person03_handclapping_d4_uncomp.avi" /> | ||
| 227 | + </biometric-signature> | ||
| 228 | + <biometric-signature name="handclapping4-1"> | ||
| 229 | + <presentation Label="handclapping" file-name="handclapping/person04_handclapping_d1_uncomp.avi" /> | ||
| 230 | + </biometric-signature> | ||
| 231 | + <biometric-signature name="handclapping4-2"> | ||
| 232 | + <presentation Label="handclapping" file-name="handclapping/person04_handclapping_d2_uncomp.avi" /> | ||
| 233 | + </biometric-signature> | ||
| 234 | + <biometric-signature name="handclapping4-3"> | ||
| 235 | + <presentation Label="handclapping" file-name="handclapping/person04_handclapping_d3_uncomp.avi" /> | ||
| 236 | + </biometric-signature> | ||
| 237 | + <biometric-signature name="handclapping4-4"> | ||
| 238 | + <presentation Label="handclapping" file-name="handclapping/person04_handclapping_d4_uncomp.avi" /> | ||
| 239 | + </biometric-signature> | ||
| 240 | + <biometric-signature name="handclapping5-1"> | ||
| 241 | + <presentation Label="handclapping" file-name="handclapping/person05_handclapping_d1_uncomp.avi" /> | ||
| 242 | + </biometric-signature> | ||
| 243 | + <biometric-signature name="handclapping5-2"> | ||
| 244 | + <presentation Label="handclapping" file-name="handclapping/person05_handclapping_d2_uncomp.avi" /> | ||
| 245 | + </biometric-signature> | ||
| 246 | + <biometric-signature name="handclapping5-3"> | ||
| 247 | + <presentation Label="handclapping" file-name="handclapping/person05_handclapping_d3_uncomp.avi" /> | ||
| 248 | + </biometric-signature> | ||
| 249 | + <biometric-signature name="handclapping5-4"> | ||
| 250 | + <presentation Label="handclapping" file-name="handclapping/person05_handclapping_d4_uncomp.avi" /> | ||
| 251 | + </biometric-signature> | ||
| 252 | + <biometric-signature name="handclapping6-1"> | ||
| 253 | + <presentation Label="handclapping" file-name="handclapping/person06_handclapping_d1_uncomp.avi" /> | ||
| 254 | + </biometric-signature> | ||
| 255 | + <biometric-signature name="handclapping6-2"> | ||
| 256 | + <presentation Label="handclapping" file-name="handclapping/person06_handclapping_d2_uncomp.avi" /> | ||
| 257 | + </biometric-signature> | ||
| 258 | + <biometric-signature name="handclapping6-3"> | ||
| 259 | + <presentation Label="handclapping" file-name="handclapping/person06_handclapping_d3_uncomp.avi" /> | ||
| 260 | + </biometric-signature> | ||
| 261 | + <biometric-signature name="handclapping6-4"> | ||
| 262 | + <presentation Label="handclapping" file-name="handclapping/person06_handclapping_d4_uncomp.avi" /> | ||
| 263 | + </biometric-signature> | ||
| 264 | + <biometric-signature name="handclapping7-1"> | ||
| 265 | + <presentation Label="handclapping" file-name="handclapping/person07_handclapping_d1_uncomp.avi" /> | ||
| 266 | + </biometric-signature> | ||
| 267 | + <biometric-signature name="handclapping7-2"> | ||
| 268 | + <presentation Label="handclapping" file-name="handclapping/person07_handclapping_d2_uncomp.avi" /> | ||
| 269 | + </biometric-signature> | ||
| 270 | + <biometric-signature name="handclapping7-3"> | ||
| 271 | + <presentation Label="handclapping" file-name="handclapping/person07_handclapping_d3_uncomp.avi" /> | ||
| 272 | + </biometric-signature> | ||
| 273 | + <biometric-signature name="handclapping7-4"> | ||
| 274 | + <presentation Label="handclapping" file-name="handclapping/person07_handclapping_d4_uncomp.avi" /> | ||
| 275 | + </biometric-signature> | ||
| 276 | + <biometric-signature name="handclapping8-1"> | ||
| 277 | + <presentation Label="handclapping" file-name="handclapping/person08_handclapping_d1_uncomp.avi" /> | ||
| 278 | + </biometric-signature> | ||
| 279 | + <biometric-signature name="handclapping8-2"> | ||
| 280 | + <presentation Label="handclapping" file-name="handclapping/person08_handclapping_d2_uncomp.avi" /> | ||
| 281 | + </biometric-signature> | ||
| 282 | + <biometric-signature name="handclapping8-3"> | ||
| 283 | + <presentation Label="handclapping" file-name="handclapping/person08_handclapping_d3_uncomp.avi" /> | ||
| 284 | + </biometric-signature> | ||
| 285 | + <biometric-signature name="handclapping8-4"> | ||
| 286 | + <presentation Label="handclapping" file-name="handclapping/person08_handclapping_d4_uncomp.avi" /> | ||
| 287 | + </biometric-signature> | ||
| 288 | + <biometric-signature name="handclapping9-1"> | ||
| 289 | + <presentation Label="handclapping" file-name="handclapping/person09_handclapping_d1_uncomp.avi" /> | ||
| 290 | + </biometric-signature> | ||
| 291 | + <biometric-signature name="handclapping9-2"> | ||
| 292 | + <presentation Label="handclapping" file-name="handclapping/person09_handclapping_d2_uncomp.avi" /> | ||
| 293 | + </biometric-signature> | ||
| 294 | + <biometric-signature name="handclapping9-3"> | ||
| 295 | + <presentation Label="handclapping" file-name="handclapping/person09_handclapping_d3_uncomp.avi" /> | ||
| 296 | + </biometric-signature> | ||
| 297 | + <biometric-signature name="handclapping9-4"> | ||
| 298 | + <presentation Label="handclapping" file-name="handclapping/person09_handclapping_d4_uncomp.avi" /> | ||
| 299 | + </biometric-signature> | ||
| 300 | + <biometric-signature name="handclapping10-1"> | ||
| 301 | + <presentation Label="handclapping" file-name="handclapping/person10_handclapping_d1_uncomp.avi" /> | ||
| 302 | + </biometric-signature> | ||
| 303 | + <biometric-signature name="handclapping10-2"> | ||
| 304 | + <presentation Label="handclapping" file-name="handclapping/person10_handclapping_d2_uncomp.avi" /> | ||
| 305 | + </biometric-signature> | ||
| 306 | + <biometric-signature name="handclapping10-3"> | ||
| 307 | + <presentation Label="handclapping" file-name="handclapping/person10_handclapping_d3_uncomp.avi" /> | ||
| 308 | + </biometric-signature> | ||
| 309 | + <biometric-signature name="handclapping10-4"> | ||
| 310 | + <presentation Label="handclapping" file-name="handclapping/person10_handclapping_d4_uncomp.avi" /> | ||
| 311 | + </biometric-signature> | ||
| 312 | + <biometric-signature name="handclapping11-1"> | ||
| 313 | + <presentation Label="handclapping" file-name="handclapping/person11_handclapping_d1_uncomp.avi" /> | ||
| 314 | + </biometric-signature> | ||
| 315 | + <biometric-signature name="handclapping11-2"> | ||
| 316 | + <presentation Label="handclapping" file-name="handclapping/person11_handclapping_d2_uncomp.avi" /> | ||
| 317 | + </biometric-signature> | ||
| 318 | + <biometric-signature name="handclapping11-3"> | ||
| 319 | + <presentation Label="handclapping" file-name="handclapping/person11_handclapping_d3_uncomp.avi" /> | ||
| 320 | + </biometric-signature> | ||
| 321 | + <biometric-signature name="handclapping11-4"> | ||
| 322 | + <presentation Label="handclapping" file-name="handclapping/person11_handclapping_d4_uncomp.avi" /> | ||
| 323 | + </biometric-signature> | ||
| 324 | + <biometric-signature name="handclapping12-1"> | ||
| 325 | + <presentation Label="handclapping" file-name="handclapping/person12_handclapping_d1_uncomp.avi" /> | ||
| 326 | + </biometric-signature> | ||
| 327 | + <biometric-signature name="handclapping12-2"> | ||
| 328 | + <presentation Label="handclapping" file-name="handclapping/person12_handclapping_d2_uncomp.avi" /> | ||
| 329 | + </biometric-signature> | ||
| 330 | + <biometric-signature name="handclapping12-3"> | ||
| 331 | + <presentation Label="handclapping" file-name="handclapping/person12_handclapping_d3_uncomp.avi" /> | ||
| 332 | + </biometric-signature> | ||
| 333 | + <biometric-signature name="handclapping12-4"> | ||
| 334 | + <presentation Label="handclapping" file-name="handclapping/person12_handclapping_d4_uncomp.avi" /> | ||
| 335 | + </biometric-signature> | ||
| 336 | + <biometric-signature name="handclapping13-1"> | ||
| 337 | + <presentation Label="handclapping" file-name="handclapping/person13_handclapping_d1_uncomp.avi" /> | ||
| 338 | + </biometric-signature> | ||
| 339 | + <biometric-signature name="handclapping13-2"> | ||
| 340 | + <presentation Label="handclapping" file-name="handclapping/person13_handclapping_d2_uncomp.avi" /> | ||
| 341 | + </biometric-signature> | ||
| 342 | + <biometric-signature name="handclapping13-4"> | ||
| 343 | + <presentation Label="handclapping" file-name="handclapping/person13_handclapping_d4_uncomp.avi" /> | ||
| 344 | + </biometric-signature> | ||
| 345 | + <biometric-signature name="handclapping14-1"> | ||
| 346 | + <presentation Label="handclapping" file-name="handclapping/person14_handclapping_d1_uncomp.avi" /> | ||
| 347 | + </biometric-signature> | ||
| 348 | + <biometric-signature name="handclapping14-2"> | ||
| 349 | + <presentation Label="handclapping" file-name="handclapping/person14_handclapping_d2_uncomp.avi" /> | ||
| 350 | + </biometric-signature> | ||
| 351 | + <biometric-signature name="handclapping14-3"> | ||
| 352 | + <presentation Label="handclapping" file-name="handclapping/person14_handclapping_d3_uncomp.avi" /> | ||
| 353 | + </biometric-signature> | ||
| 354 | + <biometric-signature name="handclapping14-4"> | ||
| 355 | + <presentation Label="handclapping" file-name="handclapping/person14_handclapping_d4_uncomp.avi" /> | ||
| 356 | + </biometric-signature> | ||
| 357 | + <biometric-signature name="handclapping15-1"> | ||
| 358 | + <presentation Label="handclapping" file-name="handclapping/person15_handclapping_d1_uncomp.avi" /> | ||
| 359 | + </biometric-signature> | ||
| 360 | + <biometric-signature name="handclapping15-2"> | ||
| 361 | + <presentation Label="handclapping" file-name="handclapping/person15_handclapping_d2_uncomp.avi" /> | ||
| 362 | + </biometric-signature> | ||
| 363 | + <biometric-signature name="handclapping15-3"> | ||
| 364 | + <presentation Label="handclapping" file-name="handclapping/person15_handclapping_d3_uncomp.avi" /> | ||
| 365 | + </biometric-signature> | ||
| 366 | + <biometric-signature name="handclapping15-4"> | ||
| 367 | + <presentation Label="handclapping" file-name="handclapping/person15_handclapping_d4_uncomp.avi" /> | ||
| 368 | + </biometric-signature> | ||
| 369 | + <biometric-signature name="handclapping16-1"> | ||
| 370 | + <presentation Label="handclapping" file-name="handclapping/person16_handclapping_d1_uncomp.avi" /> | ||
| 371 | + </biometric-signature> | ||
| 372 | + <biometric-signature name="handclapping16-2"> | ||
| 373 | + <presentation Label="handclapping" file-name="handclapping/person16_handclapping_d2_uncomp.avi" /> | ||
| 374 | + </biometric-signature> | ||
| 375 | + <biometric-signature name="handclapping16-3"> | ||
| 376 | + <presentation Label="handclapping" file-name="handclapping/person16_handclapping_d3_uncomp.avi" /> | ||
| 377 | + </biometric-signature> | ||
| 378 | + <biometric-signature name="handclapping16-4"> | ||
| 379 | + <presentation Label="handclapping" file-name="handclapping/person16_handclapping_d4_uncomp.avi" /> | ||
| 380 | + </biometric-signature> | ||
| 381 | + <biometric-signature name="handwaving1-1"> | ||
| 382 | + <presentation Label="handwaving" file-name="handwaving/person01_handwaving_d1_uncomp.avi" /> | ||
| 383 | + </biometric-signature> | ||
| 384 | + <biometric-signature name="handwaving1-2"> | ||
| 385 | + <presentation Label="handwaving" file-name="handwaving/person01_handwaving_d2_uncomp.avi" /> | ||
| 386 | + </biometric-signature> | ||
| 387 | + <biometric-signature name="handwaving1-3"> | ||
| 388 | + <presentation Label="handwaving" file-name="handwaving/person01_handwaving_d3_uncomp.avi" /> | ||
| 389 | + </biometric-signature> | ||
| 390 | + <biometric-signature name="handwaving1-4"> | ||
| 391 | + <presentation Label="handwaving" file-name="handwaving/person01_handwaving_d4_uncomp.avi" /> | ||
| 392 | + </biometric-signature> | ||
| 393 | + <biometric-signature name="handwaving2-1"> | ||
| 394 | + <presentation Label="handwaving" file-name="handwaving/person02_handwaving_d1_uncomp.avi" /> | ||
| 395 | + </biometric-signature> | ||
| 396 | + <biometric-signature name="handwaving2-2"> | ||
| 397 | + <presentation Label="handwaving" file-name="handwaving/person02_handwaving_d2_uncomp.avi" /> | ||
| 398 | + </biometric-signature> | ||
| 399 | + <biometric-signature name="handwaving2-3"> | ||
| 400 | + <presentation Label="handwaving" file-name="handwaving/person02_handwaving_d3_uncomp.avi" /> | ||
| 401 | + </biometric-signature> | ||
| 402 | + <biometric-signature name="handwaving2-4"> | ||
| 403 | + <presentation Label="handwaving" file-name="handwaving/person02_handwaving_d4_uncomp.avi" /> | ||
| 404 | + </biometric-signature> | ||
| 405 | + <biometric-signature name="handwaving3-1"> | ||
| 406 | + <presentation Label="handwaving" file-name="handwaving/person03_handwaving_d1_uncomp.avi" /> | ||
| 407 | + </biometric-signature> | ||
| 408 | + <biometric-signature name="handwaving3-2"> | ||
| 409 | + <presentation Label="handwaving" file-name="handwaving/person03_handwaving_d2_uncomp.avi" /> | ||
| 410 | + </biometric-signature> | ||
| 411 | + <biometric-signature name="handwaving3-3"> | ||
| 412 | + <presentation Label="handwaving" file-name="handwaving/person03_handwaving_d3_uncomp.avi" /> | ||
| 413 | + </biometric-signature> | ||
| 414 | + <biometric-signature name="handwaving3-4"> | ||
| 415 | + <presentation Label="handwaving" file-name="handwaving/person03_handwaving_d4_uncomp.avi" /> | ||
| 416 | + </biometric-signature> | ||
| 417 | + <biometric-signature name="handwaving4-1"> | ||
| 418 | + <presentation Label="handwaving" file-name="handwaving/person04_handwaving_d1_uncomp.avi" /> | ||
| 419 | + </biometric-signature> | ||
| 420 | + <biometric-signature name="handwaving4-2"> | ||
| 421 | + <presentation Label="handwaving" file-name="handwaving/person04_handwaving_d2_uncomp.avi" /> | ||
| 422 | + </biometric-signature> | ||
| 423 | + <biometric-signature name="handwaving4-3"> | ||
| 424 | + <presentation Label="handwaving" file-name="handwaving/person04_handwaving_d3_uncomp.avi" /> | ||
| 425 | + </biometric-signature> | ||
| 426 | + <biometric-signature name="handwaving4-4"> | ||
| 427 | + <presentation Label="handwaving" file-name="handwaving/person04_handwaving_d4_uncomp.avi" /> | ||
| 428 | + </biometric-signature> | ||
| 429 | + <biometric-signature name="handwaving5-1"> | ||
| 430 | + <presentation Label="handwaving" file-name="handwaving/person05_handwaving_d1_uncomp.avi" /> | ||
| 431 | + </biometric-signature> | ||
| 432 | + <biometric-signature name="handwaving5-2"> | ||
| 433 | + <presentation Label="handwaving" file-name="handwaving/person05_handwaving_d2_uncomp.avi" /> | ||
| 434 | + </biometric-signature> | ||
| 435 | + <biometric-signature name="handwaving5-3"> | ||
| 436 | + <presentation Label="handwaving" file-name="handwaving/person05_handwaving_d3_uncomp.avi" /> | ||
| 437 | + </biometric-signature> | ||
| 438 | + <biometric-signature name="handwaving5-4"> | ||
| 439 | + <presentation Label="handwaving" file-name="handwaving/person05_handwaving_d4_uncomp.avi" /> | ||
| 440 | + </biometric-signature> | ||
| 441 | + <biometric-signature name="handwaving6-1"> | ||
| 442 | + <presentation Label="handwaving" file-name="handwaving/person06_handwaving_d1_uncomp.avi" /> | ||
| 443 | + </biometric-signature> | ||
| 444 | + <biometric-signature name="handwaving6-2"> | ||
| 445 | + <presentation Label="handwaving" file-name="handwaving/person06_handwaving_d2_uncomp.avi" /> | ||
| 446 | + </biometric-signature> | ||
| 447 | + <biometric-signature name="handwaving6-3"> | ||
| 448 | + <presentation Label="handwaving" file-name="handwaving/person06_handwaving_d3_uncomp.avi" /> | ||
| 449 | + </biometric-signature> | ||
| 450 | + <biometric-signature name="handwaving6-4"> | ||
| 451 | + <presentation Label="handwaving" file-name="handwaving/person06_handwaving_d4_uncomp.avi" /> | ||
| 452 | + </biometric-signature> | ||
| 453 | + <biometric-signature name="handwaving7-1"> | ||
| 454 | + <presentation Label="handwaving" file-name="handwaving/person07_handwaving_d1_uncomp.avi" /> | ||
| 455 | + </biometric-signature> | ||
| 456 | + <biometric-signature name="handwaving7-2"> | ||
| 457 | + <presentation Label="handwaving" file-name="handwaving/person07_handwaving_d2_uncomp.avi" /> | ||
| 458 | + </biometric-signature> | ||
| 459 | + <biometric-signature name="handwaving7-3"> | ||
| 460 | + <presentation Label="handwaving" file-name="handwaving/person07_handwaving_d3_uncomp.avi" /> | ||
| 461 | + </biometric-signature> | ||
| 462 | + <biometric-signature name="handwaving7-4"> | ||
| 463 | + <presentation Label="handwaving" file-name="handwaving/person07_handwaving_d4_uncomp.avi" /> | ||
| 464 | + </biometric-signature> | ||
| 465 | + <biometric-signature name="handwaving8-1"> | ||
| 466 | + <presentation Label="handwaving" file-name="handwaving/person08_handwaving_d1_uncomp.avi" /> | ||
| 467 | + </biometric-signature> | ||
| 468 | + <biometric-signature name="handwaving8-2"> | ||
| 469 | + <presentation Label="handwaving" file-name="handwaving/person08_handwaving_d2_uncomp.avi" /> | ||
| 470 | + </biometric-signature> | ||
| 471 | + <biometric-signature name="handwaving8-3"> | ||
| 472 | + <presentation Label="handwaving" file-name="handwaving/person08_handwaving_d3_uncomp.avi" /> | ||
| 473 | + </biometric-signature> | ||
| 474 | + <biometric-signature name="handwaving8-4"> | ||
| 475 | + <presentation Label="handwaving" file-name="handwaving/person08_handwaving_d4_uncomp.avi" /> | ||
| 476 | + </biometric-signature> | ||
| 477 | + <biometric-signature name="handwaving9-1"> | ||
| 478 | + <presentation Label="handwaving" file-name="handwaving/person09_handwaving_d1_uncomp.avi" /> | ||
| 479 | + </biometric-signature> | ||
| 480 | + <biometric-signature name="handwaving9-2"> | ||
| 481 | + <presentation Label="handwaving" file-name="handwaving/person09_handwaving_d2_uncomp.avi" /> | ||
| 482 | + </biometric-signature> | ||
| 483 | + <biometric-signature name="handwaving9-3"> | ||
| 484 | + <presentation Label="handwaving" file-name="handwaving/person09_handwaving_d3_uncomp.avi" /> | ||
| 485 | + </biometric-signature> | ||
| 486 | + <biometric-signature name="handwaving9-4"> | ||
| 487 | + <presentation Label="handwaving" file-name="handwaving/person09_handwaving_d4_uncomp.avi" /> | ||
| 488 | + </biometric-signature> | ||
| 489 | + <biometric-signature name="handwaving10-1"> | ||
| 490 | + <presentation Label="handwaving" file-name="handwaving/person10_handwaving_d1_uncomp.avi" /> | ||
| 491 | + </biometric-signature> | ||
| 492 | + <biometric-signature name="handwaving10-2"> | ||
| 493 | + <presentation Label="handwaving" file-name="handwaving/person10_handwaving_d2_uncomp.avi" /> | ||
| 494 | + </biometric-signature> | ||
| 495 | + <biometric-signature name="handwaving10-3"> | ||
| 496 | + <presentation Label="handwaving" file-name="handwaving/person10_handwaving_d3_uncomp.avi" /> | ||
| 497 | + </biometric-signature> | ||
| 498 | + <biometric-signature name="handwaving10-4"> | ||
| 499 | + <presentation Label="handwaving" file-name="handwaving/person10_handwaving_d4_uncomp.avi" /> | ||
| 500 | + </biometric-signature> | ||
| 501 | + <biometric-signature name="handwaving11-1"> | ||
| 502 | + <presentation Label="handwaving" file-name="handwaving/person11_handwaving_d1_uncomp.avi" /> | ||
| 503 | + </biometric-signature> | ||
| 504 | + <biometric-signature name="handwaving11-2"> | ||
| 505 | + <presentation Label="handwaving" file-name="handwaving/person11_handwaving_d2_uncomp.avi" /> | ||
| 506 | + </biometric-signature> | ||
| 507 | + <biometric-signature name="handwaving11-3"> | ||
| 508 | + <presentation Label="handwaving" file-name="handwaving/person11_handwaving_d3_uncomp.avi" /> | ||
| 509 | + </biometric-signature> | ||
| 510 | + <biometric-signature name="handwaving11-4"> | ||
| 511 | + <presentation Label="handwaving" file-name="handwaving/person11_handwaving_d4_uncomp.avi" /> | ||
| 512 | + </biometric-signature> | ||
| 513 | + <biometric-signature name="handwaving12-1"> | ||
| 514 | + <presentation Label="handwaving" file-name="handwaving/person12_handwaving_d1_uncomp.avi" /> | ||
| 515 | + </biometric-signature> | ||
| 516 | + <biometric-signature name="handwaving12-2"> | ||
| 517 | + <presentation Label="handwaving" file-name="handwaving/person12_handwaving_d2_uncomp.avi" /> | ||
| 518 | + </biometric-signature> | ||
| 519 | + <biometric-signature name="handwaving12-3"> | ||
| 520 | + <presentation Label="handwaving" file-name="handwaving/person12_handwaving_d3_uncomp.avi" /> | ||
| 521 | + </biometric-signature> | ||
| 522 | + <biometric-signature name="handwaving12-4"> | ||
| 523 | + <presentation Label="handwaving" file-name="handwaving/person12_handwaving_d4_uncomp.avi" /> | ||
| 524 | + </biometric-signature> | ||
| 525 | + <biometric-signature name="handwaving13-1"> | ||
| 526 | + <presentation Label="handwaving" file-name="handwaving/person13_handwaving_d1_uncomp.avi" /> | ||
| 527 | + </biometric-signature> | ||
| 528 | + <biometric-signature name="handwaving13-2"> | ||
| 529 | + <presentation Label="handwaving" file-name="handwaving/person13_handwaving_d2_uncomp.avi" /> | ||
| 530 | + </biometric-signature> | ||
| 531 | + <biometric-signature name="handwaving13-3"> | ||
| 532 | + <presentation Label="handwaving" file-name="handwaving/person13_handwaving_d3_uncomp.avi" /> | ||
| 533 | + </biometric-signature> | ||
| 534 | + <biometric-signature name="handwaving13-4"> | ||
| 535 | + <presentation Label="handwaving" file-name="handwaving/person13_handwaving_d4_uncomp.avi" /> | ||
| 536 | + </biometric-signature> | ||
| 537 | + <biometric-signature name="handwaving14-1"> | ||
| 538 | + <presentation Label="handwaving" file-name="handwaving/person14_handwaving_d1_uncomp.avi" /> | ||
| 539 | + </biometric-signature> | ||
| 540 | + <biometric-signature name="handwaving14-2"> | ||
| 541 | + <presentation Label="handwaving" file-name="handwaving/person14_handwaving_d2_uncomp.avi" /> | ||
| 542 | + </biometric-signature> | ||
| 543 | + <biometric-signature name="handwaving14-3"> | ||
| 544 | + <presentation Label="handwaving" file-name="handwaving/person14_handwaving_d3_uncomp.avi" /> | ||
| 545 | + </biometric-signature> | ||
| 546 | + <biometric-signature name="handwaving14-4"> | ||
| 547 | + <presentation Label="handwaving" file-name="handwaving/person14_handwaving_d4_uncomp.avi" /> | ||
| 548 | + </biometric-signature> | ||
| 549 | + <biometric-signature name="handwaving15-1"> | ||
| 550 | + <presentation Label="handwaving" file-name="handwaving/person15_handwaving_d1_uncomp.avi" /> | ||
| 551 | + </biometric-signature> | ||
| 552 | + <biometric-signature name="handwaving15-2"> | ||
| 553 | + <presentation Label="handwaving" file-name="handwaving/person15_handwaving_d2_uncomp.avi" /> | ||
| 554 | + </biometric-signature> | ||
| 555 | + <biometric-signature name="handwaving15-3"> | ||
| 556 | + <presentation Label="handwaving" file-name="handwaving/person15_handwaving_d3_uncomp.avi" /> | ||
| 557 | + </biometric-signature> | ||
| 558 | + <biometric-signature name="handwaving15-4"> | ||
| 559 | + <presentation Label="handwaving" file-name="handwaving/person15_handwaving_d4_uncomp.avi" /> | ||
| 560 | + </biometric-signature> | ||
| 561 | + <biometric-signature name="handwaving16-1"> | ||
| 562 | + <presentation Label="handwaving" file-name="handwaving/person16_handwaving_d1_uncomp.avi" /> | ||
| 563 | + </biometric-signature> | ||
| 564 | + <biometric-signature name="handwaving16-2"> | ||
| 565 | + <presentation Label="handwaving" file-name="handwaving/person16_handwaving_d2_uncomp.avi" /> | ||
| 566 | + </biometric-signature> | ||
| 567 | + <biometric-signature name="handwaving16-3"> | ||
| 568 | + <presentation Label="handwaving" file-name="handwaving/person16_handwaving_d3_uncomp.avi" /> | ||
| 569 | + </biometric-signature> | ||
| 570 | + <biometric-signature name="handwaving16-4"> | ||
| 571 | + <presentation Label="handwaving" file-name="handwaving/person16_handwaving_d4_uncomp.avi" /> | ||
| 572 | + </biometric-signature> | ||
| 573 | + <biometric-signature name="jogging1-1"> | ||
| 574 | + <presentation Label="jogging" file-name="jogging/person01_jogging_d1_uncomp.avi" /> | ||
| 575 | + </biometric-signature> | ||
| 576 | + <biometric-signature name="jogging1-2"> | ||
| 577 | + <presentation Label="jogging" file-name="jogging/person01_jogging_d2_uncomp.avi" /> | ||
| 578 | + </biometric-signature> | ||
| 579 | + <biometric-signature name="jogging1-3"> | ||
| 580 | + <presentation Label="jogging" file-name="jogging/person01_jogging_d3_uncomp.avi" /> | ||
| 581 | + </biometric-signature> | ||
| 582 | + <biometric-signature name="jogging1-4"> | ||
| 583 | + <presentation Label="jogging" file-name="jogging/person01_jogging_d4_uncomp.avi" /> | ||
| 584 | + </biometric-signature> | ||
| 585 | + <biometric-signature name="jogging2-1"> | ||
| 586 | + <presentation Label="jogging" file-name="jogging/person02_jogging_d1_uncomp.avi" /> | ||
| 587 | + </biometric-signature> | ||
| 588 | + <biometric-signature name="jogging2-2"> | ||
| 589 | + <presentation Label="jogging" file-name="jogging/person02_jogging_d2_uncomp.avi" /> | ||
| 590 | + </biometric-signature> | ||
| 591 | + <biometric-signature name="jogging2-3"> | ||
| 592 | + <presentation Label="jogging" file-name="jogging/person02_jogging_d3_uncomp.avi" /> | ||
| 593 | + </biometric-signature> | ||
| 594 | + <biometric-signature name="jogging2-4"> | ||
| 595 | + <presentation Label="jogging" file-name="jogging/person02_jogging_d4_uncomp.avi" /> | ||
| 596 | + </biometric-signature> | ||
| 597 | + <biometric-signature name="jogging3-1"> | ||
| 598 | + <presentation Label="jogging" file-name="jogging/person03_jogging_d1_uncomp.avi" /> | ||
| 599 | + </biometric-signature> | ||
| 600 | + <biometric-signature name="jogging3-2"> | ||
| 601 | + <presentation Label="jogging" file-name="jogging/person03_jogging_d2_uncomp.avi" /> | ||
| 602 | + </biometric-signature> | ||
| 603 | + <biometric-signature name="jogging3-3"> | ||
| 604 | + <presentation Label="jogging" file-name="jogging/person03_jogging_d3_uncomp.avi" /> | ||
| 605 | + </biometric-signature> | ||
| 606 | + <biometric-signature name="jogging3-4"> | ||
| 607 | + <presentation Label="jogging" file-name="jogging/person03_jogging_d4_uncomp.avi" /> | ||
| 608 | + </biometric-signature> | ||
| 609 | + <biometric-signature name="jogging4-1"> | ||
| 610 | + <presentation Label="jogging" file-name="jogging/person04_jogging_d1_uncomp.avi" /> | ||
| 611 | + </biometric-signature> | ||
| 612 | + <biometric-signature name="jogging4-2"> | ||
| 613 | + <presentation Label="jogging" file-name="jogging/person04_jogging_d2_uncomp.avi" /> | ||
| 614 | + </biometric-signature> | ||
| 615 | + <biometric-signature name="jogging4-3"> | ||
| 616 | + <presentation Label="jogging" file-name="jogging/person04_jogging_d3_uncomp.avi" /> | ||
| 617 | + </biometric-signature> | ||
| 618 | + <biometric-signature name="jogging4-4"> | ||
| 619 | + <presentation Label="jogging" file-name="jogging/person04_jogging_d4_uncomp.avi" /> | ||
| 620 | + </biometric-signature> | ||
| 621 | + <biometric-signature name="jogging5-1"> | ||
| 622 | + <presentation Label="jogging" file-name="jogging/person05_jogging_d1_uncomp.avi" /> | ||
| 623 | + </biometric-signature> | ||
| 624 | + <biometric-signature name="jogging5-2"> | ||
| 625 | + <presentation Label="jogging" file-name="jogging/person05_jogging_d2_uncomp.avi" /> | ||
| 626 | + </biometric-signature> | ||
| 627 | + <biometric-signature name="jogging5-3"> | ||
| 628 | + <presentation Label="jogging" file-name="jogging/person05_jogging_d3_uncomp.avi" /> | ||
| 629 | + </biometric-signature> | ||
| 630 | + <biometric-signature name="jogging5-4"> | ||
| 631 | + <presentation Label="jogging" file-name="jogging/person05_jogging_d4_uncomp.avi" /> | ||
| 632 | + </biometric-signature> | ||
| 633 | + <biometric-signature name="jogging6-1"> | ||
| 634 | + <presentation Label="jogging" file-name="jogging/person06_jogging_d1_uncomp.avi" /> | ||
| 635 | + </biometric-signature> | ||
| 636 | + <biometric-signature name="jogging6-2"> | ||
| 637 | + <presentation Label="jogging" file-name="jogging/person06_jogging_d2_uncomp.avi" /> | ||
| 638 | + </biometric-signature> | ||
| 639 | + <biometric-signature name="jogging6-3"> | ||
| 640 | + <presentation Label="jogging" file-name="jogging/person06_jogging_d3_uncomp.avi" /> | ||
| 641 | + </biometric-signature> | ||
| 642 | + <biometric-signature name="jogging6-4"> | ||
| 643 | + <presentation Label="jogging" file-name="jogging/person06_jogging_d4_uncomp.avi" /> | ||
| 644 | + </biometric-signature> | ||
| 645 | + <biometric-signature name="jogging7-1"> | ||
| 646 | + <presentation Label="jogging" file-name="jogging/person07_jogging_d1_uncomp.avi" /> | ||
| 647 | + </biometric-signature> | ||
| 648 | + <biometric-signature name="jogging7-2"> | ||
| 649 | + <presentation Label="jogging" file-name="jogging/person07_jogging_d2_uncomp.avi" /> | ||
| 650 | + </biometric-signature> | ||
| 651 | + <biometric-signature name="jogging7-3"> | ||
| 652 | + <presentation Label="jogging" file-name="jogging/person07_jogging_d3_uncomp.avi" /> | ||
| 653 | + </biometric-signature> | ||
| 654 | + <biometric-signature name="jogging7-4"> | ||
| 655 | + <presentation Label="jogging" file-name="jogging/person07_jogging_d4_uncomp.avi" /> | ||
| 656 | + </biometric-signature> | ||
| 657 | + <biometric-signature name="jogging8-1"> | ||
| 658 | + <presentation Label="jogging" file-name="jogging/person08_jogging_d1_uncomp.avi" /> | ||
| 659 | + </biometric-signature> | ||
| 660 | + <biometric-signature name="jogging8-2"> | ||
| 661 | + <presentation Label="jogging" file-name="jogging/person08_jogging_d2_uncomp.avi" /> | ||
| 662 | + </biometric-signature> | ||
| 663 | + <biometric-signature name="jogging8-3"> | ||
| 664 | + <presentation Label="jogging" file-name="jogging/person08_jogging_d3_uncomp.avi" /> | ||
| 665 | + </biometric-signature> | ||
| 666 | + <biometric-signature name="jogging8-4"> | ||
| 667 | + <presentation Label="jogging" file-name="jogging/person08_jogging_d4_uncomp.avi" /> | ||
| 668 | + </biometric-signature> | ||
| 669 | + <biometric-signature name="jogging9-1"> | ||
| 670 | + <presentation Label="jogging" file-name="jogging/person09_jogging_d1_uncomp.avi" /> | ||
| 671 | + </biometric-signature> | ||
| 672 | + <biometric-signature name="jogging9-2"> | ||
| 673 | + <presentation Label="jogging" file-name="jogging/person09_jogging_d2_uncomp.avi" /> | ||
| 674 | + </biometric-signature> | ||
| 675 | + <biometric-signature name="jogging9-3"> | ||
| 676 | + <presentation Label="jogging" file-name="jogging/person09_jogging_d3_uncomp.avi" /> | ||
| 677 | + </biometric-signature> | ||
| 678 | + <biometric-signature name="jogging9-4"> | ||
| 679 | + <presentation Label="jogging" file-name="jogging/person09_jogging_d4_uncomp.avi" /> | ||
| 680 | + </biometric-signature> | ||
| 681 | + <biometric-signature name="jogging10-1"> | ||
| 682 | + <presentation Label="jogging" file-name="jogging/person10_jogging_d1_uncomp.avi" /> | ||
| 683 | + </biometric-signature> | ||
| 684 | + <biometric-signature name="jogging10-2"> | ||
| 685 | + <presentation Label="jogging" file-name="jogging/person10_jogging_d2_uncomp.avi" /> | ||
| 686 | + </biometric-signature> | ||
| 687 | + <biometric-signature name="jogging10-3"> | ||
| 688 | + <presentation Label="jogging" file-name="jogging/person10_jogging_d3_uncomp.avi" /> | ||
| 689 | + </biometric-signature> | ||
| 690 | + <biometric-signature name="jogging10-4"> | ||
| 691 | + <presentation Label="jogging" file-name="jogging/person10_jogging_d4_uncomp.avi" /> | ||
| 692 | + </biometric-signature> | ||
| 693 | + <biometric-signature name="jogging11-1"> | ||
| 694 | + <presentation Label="jogging" file-name="jogging/person11_jogging_d1_uncomp.avi" /> | ||
| 695 | + </biometric-signature> | ||
| 696 | + <biometric-signature name="jogging11-2"> | ||
| 697 | + <presentation Label="jogging" file-name="jogging/person11_jogging_d2_uncomp.avi" /> | ||
| 698 | + </biometric-signature> | ||
| 699 | + <biometric-signature name="jogging11-3"> | ||
| 700 | + <presentation Label="jogging" file-name="jogging/person11_jogging_d3_uncomp.avi" /> | ||
| 701 | + </biometric-signature> | ||
| 702 | + <biometric-signature name="jogging11-4"> | ||
| 703 | + <presentation Label="jogging" file-name="jogging/person11_jogging_d4_uncomp.avi" /> | ||
| 704 | + </biometric-signature> | ||
| 705 | + <biometric-signature name="jogging12-1"> | ||
| 706 | + <presentation Label="jogging" file-name="jogging/person12_jogging_d1_uncomp.avi" /> | ||
| 707 | + </biometric-signature> | ||
| 708 | + <biometric-signature name="jogging12-2"> | ||
| 709 | + <presentation Label="jogging" file-name="jogging/person12_jogging_d2_uncomp.avi" /> | ||
| 710 | + </biometric-signature> | ||
| 711 | + <biometric-signature name="jogging12-3"> | ||
| 712 | + <presentation Label="jogging" file-name="jogging/person12_jogging_d3_uncomp.avi" /> | ||
| 713 | + </biometric-signature> | ||
| 714 | + <biometric-signature name="jogging12-4"> | ||
| 715 | + <presentation Label="jogging" file-name="jogging/person12_jogging_d4_uncomp.avi" /> | ||
| 716 | + </biometric-signature> | ||
| 717 | + <biometric-signature name="jogging13-1"> | ||
| 718 | + <presentation Label="jogging" file-name="jogging/person13_jogging_d1_uncomp.avi" /> | ||
| 719 | + </biometric-signature> | ||
| 720 | + <biometric-signature name="jogging13-2"> | ||
| 721 | + <presentation Label="jogging" file-name="jogging/person13_jogging_d2_uncomp.avi" /> | ||
| 722 | + </biometric-signature> | ||
| 723 | + <biometric-signature name="jogging13-3"> | ||
| 724 | + <presentation Label="jogging" file-name="jogging/person13_jogging_d3_uncomp.avi" /> | ||
| 725 | + </biometric-signature> | ||
| 726 | + <biometric-signature name="jogging13-4"> | ||
| 727 | + <presentation Label="jogging" file-name="jogging/person13_jogging_d4_uncomp.avi" /> | ||
| 728 | + </biometric-signature> | ||
| 729 | + <biometric-signature name="jogging14-1"> | ||
| 730 | + <presentation Label="jogging" file-name="jogging/person14_jogging_d1_uncomp.avi" /> | ||
| 731 | + </biometric-signature> | ||
| 732 | + <biometric-signature name="jogging14-2"> | ||
| 733 | + <presentation Label="jogging" file-name="jogging/person14_jogging_d2_uncomp.avi" /> | ||
| 734 | + </biometric-signature> | ||
| 735 | + <biometric-signature name="jogging14-3"> | ||
| 736 | + <presentation Label="jogging" file-name="jogging/person14_jogging_d3_uncomp.avi" /> | ||
| 737 | + </biometric-signature> | ||
| 738 | + <biometric-signature name="jogging14-4"> | ||
| 739 | + <presentation Label="jogging" file-name="jogging/person14_jogging_d4_uncomp.avi" /> | ||
| 740 | + </biometric-signature> | ||
| 741 | + <biometric-signature name="jogging15-1"> | ||
| 742 | + <presentation Label="jogging" file-name="jogging/person15_jogging_d1_uncomp.avi" /> | ||
| 743 | + </biometric-signature> | ||
| 744 | + <biometric-signature name="jogging15-2"> | ||
| 745 | + <presentation Label="jogging" file-name="jogging/person15_jogging_d2_uncomp.avi" /> | ||
| 746 | + </biometric-signature> | ||
| 747 | + <biometric-signature name="jogging15-3"> | ||
| 748 | + <presentation Label="jogging" file-name="jogging/person15_jogging_d3_uncomp.avi" /> | ||
| 749 | + </biometric-signature> | ||
| 750 | + <biometric-signature name="jogging15-4"> | ||
| 751 | + <presentation Label="jogging" file-name="jogging/person15_jogging_d4_uncomp.avi" /> | ||
| 752 | + </biometric-signature> | ||
| 753 | + <biometric-signature name="jogging16-1"> | ||
| 754 | + <presentation Label="jogging" file-name="jogging/person16_jogging_d1_uncomp.avi" /> | ||
| 755 | + </biometric-signature> | ||
| 756 | + <biometric-signature name="jogging16-2"> | ||
| 757 | + <presentation Label="jogging" file-name="jogging/person16_jogging_d2_uncomp.avi" /> | ||
| 758 | + </biometric-signature> | ||
| 759 | + <biometric-signature name="jogging16-3"> | ||
| 760 | + <presentation Label="jogging" file-name="jogging/person16_jogging_d3_uncomp.avi" /> | ||
| 761 | + </biometric-signature> | ||
| 762 | + <biometric-signature name="jogging16-4"> | ||
| 763 | + <presentation Label="jogging" file-name="jogging/person16_jogging_d4_uncomp.avi" /> | ||
| 764 | + </biometric-signature> | ||
| 765 | + <biometric-signature name="running1-1"> | ||
| 766 | + <presentation Label="running" file-name="running/person01_running_d1_uncomp.avi" /> | ||
| 767 | + </biometric-signature> | ||
| 768 | + <biometric-signature name="running1-2"> | ||
| 769 | + <presentation Label="running" file-name="running/person01_running_d2_uncomp.avi" /> | ||
| 770 | + </biometric-signature> | ||
| 771 | + <biometric-signature name="running1-3"> | ||
| 772 | + <presentation Label="running" file-name="running/person01_running_d3_uncomp.avi" /> | ||
| 773 | + </biometric-signature> | ||
| 774 | + <biometric-signature name="running1-4"> | ||
| 775 | + <presentation Label="running" file-name="running/person01_running_d4_uncomp.avi" /> | ||
| 776 | + </biometric-signature> | ||
| 777 | + <biometric-signature name="running2-1"> | ||
| 778 | + <presentation Label="running" file-name="running/person02_running_d1_uncomp.avi" /> | ||
| 779 | + </biometric-signature> | ||
| 780 | + <biometric-signature name="running2-2"> | ||
| 781 | + <presentation Label="running" file-name="running/person02_running_d2_uncomp.avi" /> | ||
| 782 | + </biometric-signature> | ||
| 783 | + <biometric-signature name="running2-3"> | ||
| 784 | + <presentation Label="running" file-name="running/person02_running_d3_uncomp.avi" /> | ||
| 785 | + </biometric-signature> | ||
| 786 | + <biometric-signature name="running2-4"> | ||
| 787 | + <presentation Label="running" file-name="running/person02_running_d4_uncomp.avi" /> | ||
| 788 | + </biometric-signature> | ||
| 789 | + <biometric-signature name="running3-1"> | ||
| 790 | + <presentation Label="running" file-name="running/person03_running_d1_uncomp.avi" /> | ||
| 791 | + </biometric-signature> | ||
| 792 | + <biometric-signature name="running3-2"> | ||
| 793 | + <presentation Label="running" file-name="running/person03_running_d2_uncomp.avi" /> | ||
| 794 | + </biometric-signature> | ||
| 795 | + <biometric-signature name="running3-3"> | ||
| 796 | + <presentation Label="running" file-name="running/person03_running_d3_uncomp.avi" /> | ||
| 797 | + </biometric-signature> | ||
| 798 | + <biometric-signature name="running3-4"> | ||
| 799 | + <presentation Label="running" file-name="running/person03_running_d4_uncomp.avi" /> | ||
| 800 | + </biometric-signature> | ||
| 801 | + <biometric-signature name="running4-1"> | ||
| 802 | + <presentation Label="running" file-name="running/person04_running_d1_uncomp.avi" /> | ||
| 803 | + </biometric-signature> | ||
| 804 | + <biometric-signature name="running4-2"> | ||
| 805 | + <presentation Label="running" file-name="running/person04_running_d2_uncomp.avi" /> | ||
| 806 | + </biometric-signature> | ||
| 807 | + <biometric-signature name="running4-3"> | ||
| 808 | + <presentation Label="running" file-name="running/person04_running_d3_uncomp.avi" /> | ||
| 809 | + </biometric-signature> | ||
| 810 | + <biometric-signature name="running4-4"> | ||
| 811 | + <presentation Label="running" file-name="running/person04_running_d4_uncomp.avi" /> | ||
| 812 | + </biometric-signature> | ||
| 813 | + <biometric-signature name="running5-1"> | ||
| 814 | + <presentation Label="running" file-name="running/person05_running_d1_uncomp.avi" /> | ||
| 815 | + </biometric-signature> | ||
| 816 | + <biometric-signature name="running5-2"> | ||
| 817 | + <presentation Label="running" file-name="running/person05_running_d2_uncomp.avi" /> | ||
| 818 | + </biometric-signature> | ||
| 819 | + <biometric-signature name="running5-3"> | ||
| 820 | + <presentation Label="running" file-name="running/person05_running_d3_uncomp.avi" /> | ||
| 821 | + </biometric-signature> | ||
| 822 | + <biometric-signature name="running5-4"> | ||
| 823 | + <presentation Label="running" file-name="running/person05_running_d4_uncomp.avi" /> | ||
| 824 | + </biometric-signature> | ||
| 825 | + <biometric-signature name="running6-1"> | ||
| 826 | + <presentation Label="running" file-name="running/person06_running_d1_uncomp.avi" /> | ||
| 827 | + </biometric-signature> | ||
| 828 | + <biometric-signature name="running6-2"> | ||
| 829 | + <presentation Label="running" file-name="running/person06_running_d2_uncomp.avi" /> | ||
| 830 | + </biometric-signature> | ||
| 831 | + <biometric-signature name="running6-3"> | ||
| 832 | + <presentation Label="running" file-name="running/person06_running_d3_uncomp.avi" /> | ||
| 833 | + </biometric-signature> | ||
| 834 | + <biometric-signature name="running6-4"> | ||
| 835 | + <presentation Label="running" file-name="running/person06_running_d4_uncomp.avi" /> | ||
| 836 | + </biometric-signature> | ||
| 837 | + <biometric-signature name="running7-1"> | ||
| 838 | + <presentation Label="running" file-name="running/person07_running_d1_uncomp.avi" /> | ||
| 839 | + </biometric-signature> | ||
| 840 | + <biometric-signature name="running7-2"> | ||
| 841 | + <presentation Label="running" file-name="running/person07_running_d2_uncomp.avi" /> | ||
| 842 | + </biometric-signature> | ||
| 843 | + <biometric-signature name="running7-3"> | ||
| 844 | + <presentation Label="running" file-name="running/person07_running_d3_uncomp.avi" /> | ||
| 845 | + </biometric-signature> | ||
| 846 | + <biometric-signature name="running7-4"> | ||
| 847 | + <presentation Label="running" file-name="running/person07_running_d4_uncomp.avi" /> | ||
| 848 | + </biometric-signature> | ||
| 849 | + <biometric-signature name="running8-1"> | ||
| 850 | + <presentation Label="running" file-name="running/person08_running_d1_uncomp.avi" /> | ||
| 851 | + </biometric-signature> | ||
| 852 | + <biometric-signature name="running8-2"> | ||
| 853 | + <presentation Label="running" file-name="running/person08_running_d2_uncomp.avi" /> | ||
| 854 | + </biometric-signature> | ||
| 855 | + <biometric-signature name="running8-3"> | ||
| 856 | + <presentation Label="running" file-name="running/person08_running_d3_uncomp.avi" /> | ||
| 857 | + </biometric-signature> | ||
| 858 | + <biometric-signature name="running8-4"> | ||
| 859 | + <presentation Label="running" file-name="running/person08_running_d4_uncomp.avi" /> | ||
| 860 | + </biometric-signature> | ||
| 861 | + <biometric-signature name="running9-1"> | ||
| 862 | + <presentation Label="running" file-name="running/person09_running_d1_uncomp.avi" /> | ||
| 863 | + </biometric-signature> | ||
| 864 | + <biometric-signature name="running9-2"> | ||
| 865 | + <presentation Label="running" file-name="running/person09_running_d2_uncomp.avi" /> | ||
| 866 | + </biometric-signature> | ||
| 867 | + <biometric-signature name="running9-3"> | ||
| 868 | + <presentation Label="running" file-name="running/person09_running_d3_uncomp.avi" /> | ||
| 869 | + </biometric-signature> | ||
| 870 | + <biometric-signature name="running9-4"> | ||
| 871 | + <presentation Label="running" file-name="running/person09_running_d4_uncomp.avi" /> | ||
| 872 | + </biometric-signature> | ||
| 873 | + <biometric-signature name="running10-1"> | ||
| 874 | + <presentation Label="running" file-name="running/person10_running_d1_uncomp.avi" /> | ||
| 875 | + </biometric-signature> | ||
| 876 | + <biometric-signature name="running10-2"> | ||
| 877 | + <presentation Label="running" file-name="running/person10_running_d2_uncomp.avi" /> | ||
| 878 | + </biometric-signature> | ||
| 879 | + <biometric-signature name="running10-3"> | ||
| 880 | + <presentation Label="running" file-name="running/person10_running_d3_uncomp.avi" /> | ||
| 881 | + </biometric-signature> | ||
| 882 | + <biometric-signature name="running10-4"> | ||
| 883 | + <presentation Label="running" file-name="running/person10_running_d4_uncomp.avi" /> | ||
| 884 | + </biometric-signature> | ||
| 885 | + <biometric-signature name="running11-1"> | ||
| 886 | + <presentation Label="running" file-name="running/person11_running_d1_uncomp.avi" /> | ||
| 887 | + </biometric-signature> | ||
| 888 | + <biometric-signature name="running11-2"> | ||
| 889 | + <presentation Label="running" file-name="running/person11_running_d2_uncomp.avi" /> | ||
| 890 | + </biometric-signature> | ||
| 891 | + <biometric-signature name="running11-3"> | ||
| 892 | + <presentation Label="running" file-name="running/person11_running_d3_uncomp.avi" /> | ||
| 893 | + </biometric-signature> | ||
| 894 | + <biometric-signature name="running11-4"> | ||
| 895 | + <presentation Label="running" file-name="running/person11_running_d4_uncomp.avi" /> | ||
| 896 | + </biometric-signature> | ||
| 897 | + <biometric-signature name="running12-1"> | ||
| 898 | + <presentation Label="running" file-name="running/person12_running_d1_uncomp.avi" /> | ||
| 899 | + </biometric-signature> | ||
| 900 | + <biometric-signature name="running12-2"> | ||
| 901 | + <presentation Label="running" file-name="running/person12_running_d2_uncomp.avi" /> | ||
| 902 | + </biometric-signature> | ||
| 903 | + <biometric-signature name="running12-3"> | ||
| 904 | + <presentation Label="running" file-name="running/person12_running_d3_uncomp.avi" /> | ||
| 905 | + </biometric-signature> | ||
| 906 | + <biometric-signature name="running12-4"> | ||
| 907 | + <presentation Label="running" file-name="running/person12_running_d4_uncomp.avi" /> | ||
| 908 | + </biometric-signature> | ||
| 909 | + <biometric-signature name="running13-1"> | ||
| 910 | + <presentation Label="running" file-name="running/person13_running_d1_uncomp.avi" /> | ||
| 911 | + </biometric-signature> | ||
| 912 | + <biometric-signature name="running13-2"> | ||
| 913 | + <presentation Label="running" file-name="running/person13_running_d2_uncomp.avi" /> | ||
| 914 | + </biometric-signature> | ||
| 915 | + <biometric-signature name="running13-3"> | ||
| 916 | + <presentation Label="running" file-name="running/person13_running_d3_uncomp.avi" /> | ||
| 917 | + </biometric-signature> | ||
| 918 | + <biometric-signature name="running13-4"> | ||
| 919 | + <presentation Label="running" file-name="running/person13_running_d4_uncomp.avi" /> | ||
| 920 | + </biometric-signature> | ||
| 921 | + <biometric-signature name="running14-1"> | ||
| 922 | + <presentation Label="running" file-name="running/person14_running_d1_uncomp.avi" /> | ||
| 923 | + </biometric-signature> | ||
| 924 | + <biometric-signature name="running14-2"> | ||
| 925 | + <presentation Label="running" file-name="running/person14_running_d2_uncomp.avi" /> | ||
| 926 | + </biometric-signature> | ||
| 927 | + <biometric-signature name="running14-3"> | ||
| 928 | + <presentation Label="running" file-name="running/person14_running_d3_uncomp.avi" /> | ||
| 929 | + </biometric-signature> | ||
| 930 | + <biometric-signature name="running14-4"> | ||
| 931 | + <presentation Label="running" file-name="running/person14_running_d4_uncomp.avi" /> | ||
| 932 | + </biometric-signature> | ||
| 933 | + <biometric-signature name="running15-1"> | ||
| 934 | + <presentation Label="running" file-name="running/person15_running_d1_uncomp.avi" /> | ||
| 935 | + </biometric-signature> | ||
| 936 | + <biometric-signature name="running15-2"> | ||
| 937 | + <presentation Label="running" file-name="running/person15_running_d2_uncomp.avi" /> | ||
| 938 | + </biometric-signature> | ||
| 939 | + <biometric-signature name="running15-3"> | ||
| 940 | + <presentation Label="running" file-name="running/person15_running_d3_uncomp.avi" /> | ||
| 941 | + </biometric-signature> | ||
| 942 | + <biometric-signature name="running15-4"> | ||
| 943 | + <presentation Label="running" file-name="running/person15_running_d4_uncomp.avi" /> | ||
| 944 | + </biometric-signature> | ||
| 945 | + <biometric-signature name="running16-1"> | ||
| 946 | + <presentation Label="running" file-name="running/person16_running_d1_uncomp.avi" /> | ||
| 947 | + </biometric-signature> | ||
| 948 | + <biometric-signature name="running16-2"> | ||
| 949 | + <presentation Label="running" file-name="running/person16_running_d2_uncomp.avi" /> | ||
| 950 | + </biometric-signature> | ||
| 951 | + <biometric-signature name="running16-3"> | ||
| 952 | + <presentation Label="running" file-name="running/person16_running_d3_uncomp.avi" /> | ||
| 953 | + </biometric-signature> | ||
| 954 | + <biometric-signature name="running16-4"> | ||
| 955 | + <presentation Label="running" file-name="running/person16_running_d4_uncomp.avi" /> | ||
| 956 | + </biometric-signature> | ||
| 957 | + <biometric-signature name="walking1-1"> | ||
| 958 | + <presentation Label="walking" file-name="walking/person01_walking_d1_uncomp.avi" /> | ||
| 959 | + </biometric-signature> | ||
| 960 | + <biometric-signature name="walking1-2"> | ||
| 961 | + <presentation Label="walking" file-name="walking/person01_walking_d2_uncomp.avi" /> | ||
| 962 | + </biometric-signature> | ||
| 963 | + <biometric-signature name="walking1-3"> | ||
| 964 | + <presentation Label="walking" file-name="walking/person01_walking_d3_uncomp.avi" /> | ||
| 965 | + </biometric-signature> | ||
| 966 | + <biometric-signature name="walking1-4"> | ||
| 967 | + <presentation Label="walking" file-name="walking/person01_walking_d4_uncomp.avi" /> | ||
| 968 | + </biometric-signature> | ||
| 969 | + <biometric-signature name="walking2-1"> | ||
| 970 | + <presentation Label="walking" file-name="walking/person02_walking_d1_uncomp.avi" /> | ||
| 971 | + </biometric-signature> | ||
| 972 | + <biometric-signature name="walking2-2"> | ||
| 973 | + <presentation Label="walking" file-name="walking/person02_walking_d2_uncomp.avi" /> | ||
| 974 | + </biometric-signature> | ||
| 975 | + <biometric-signature name="walking2-3"> | ||
| 976 | + <presentation Label="walking" file-name="walking/person02_walking_d3_uncomp.avi" /> | ||
| 977 | + </biometric-signature> | ||
| 978 | + <biometric-signature name="walking2-4"> | ||
| 979 | + <presentation Label="walking" file-name="walking/person02_walking_d4_uncomp.avi" /> | ||
| 980 | + </biometric-signature> | ||
| 981 | + <biometric-signature name="walking3-1"> | ||
| 982 | + <presentation Label="walking" file-name="walking/person03_walking_d1_uncomp.avi" /> | ||
| 983 | + </biometric-signature> | ||
| 984 | + <biometric-signature name="walking3-2"> | ||
| 985 | + <presentation Label="walking" file-name="walking/person03_walking_d2_uncomp.avi" /> | ||
| 986 | + </biometric-signature> | ||
| 987 | + <biometric-signature name="walking3-3"> | ||
| 988 | + <presentation Label="walking" file-name="walking/person03_walking_d3_uncomp.avi" /> | ||
| 989 | + </biometric-signature> | ||
| 990 | + <biometric-signature name="walking3-4"> | ||
| 991 | + <presentation Label="walking" file-name="walking/person03_walking_d4_uncomp.avi" /> | ||
| 992 | + </biometric-signature> | ||
| 993 | + <biometric-signature name="walking4-1"> | ||
| 994 | + <presentation Label="walking" file-name="walking/person04_walking_d1_uncomp.avi" /> | ||
| 995 | + </biometric-signature> | ||
| 996 | + <biometric-signature name="walking4-2"> | ||
| 997 | + <presentation Label="walking" file-name="walking/person04_walking_d2_uncomp.avi" /> | ||
| 998 | + </biometric-signature> | ||
| 999 | + <biometric-signature name="walking4-3"> | ||
| 1000 | + <presentation Label="walking" file-name="walking/person04_walking_d3_uncomp.avi" /> | ||
| 1001 | + </biometric-signature> | ||
| 1002 | + <biometric-signature name="walking4-4"> | ||
| 1003 | + <presentation Label="walking" file-name="walking/person04_walking_d4_uncomp.avi" /> | ||
| 1004 | + </biometric-signature> | ||
| 1005 | + <biometric-signature name="walking5-1"> | ||
| 1006 | + <presentation Label="walking" file-name="walking/person05_walking_d1_uncomp.avi" /> | ||
| 1007 | + </biometric-signature> | ||
| 1008 | + <biometric-signature name="walking5-2"> | ||
| 1009 | + <presentation Label="walking" file-name="walking/person05_walking_d2_uncomp.avi" /> | ||
| 1010 | + </biometric-signature> | ||
| 1011 | + <biometric-signature name="walking5-3"> | ||
| 1012 | + <presentation Label="walking" file-name="walking/person05_walking_d3_uncomp.avi" /> | ||
| 1013 | + </biometric-signature> | ||
| 1014 | + <biometric-signature name="walking5-4"> | ||
| 1015 | + <presentation Label="walking" file-name="walking/person05_walking_d4_uncomp.avi" /> | ||
| 1016 | + </biometric-signature> | ||
| 1017 | + <biometric-signature name="walking6-1"> | ||
| 1018 | + <presentation Label="walking" file-name="walking/person06_walking_d1_uncomp.avi" /> | ||
| 1019 | + </biometric-signature> | ||
| 1020 | + <biometric-signature name="walking6-2"> | ||
| 1021 | + <presentation Label="walking" file-name="walking/person06_walking_d2_uncomp.avi" /> | ||
| 1022 | + </biometric-signature> | ||
| 1023 | + <biometric-signature name="walking6-3"> | ||
| 1024 | + <presentation Label="walking" file-name="walking/person06_walking_d3_uncomp.avi" /> | ||
| 1025 | + </biometric-signature> | ||
| 1026 | + <biometric-signature name="walking6-4"> | ||
| 1027 | + <presentation Label="walking" file-name="walking/person06_walking_d4_uncomp.avi" /> | ||
| 1028 | + </biometric-signature> | ||
| 1029 | + <biometric-signature name="walking7-1"> | ||
| 1030 | + <presentation Label="walking" file-name="walking/person07_walking_d1_uncomp.avi" /> | ||
| 1031 | + </biometric-signature> | ||
| 1032 | + <biometric-signature name="walking7-2"> | ||
| 1033 | + <presentation Label="walking" file-name="walking/person07_walking_d2_uncomp.avi" /> | ||
| 1034 | + </biometric-signature> | ||
| 1035 | + <biometric-signature name="walking7-3"> | ||
| 1036 | + <presentation Label="walking" file-name="walking/person07_walking_d3_uncomp.avi" /> | ||
| 1037 | + </biometric-signature> | ||
| 1038 | + <biometric-signature name="walking7-4"> | ||
| 1039 | + <presentation Label="walking" file-name="walking/person07_walking_d4_uncomp.avi" /> | ||
| 1040 | + </biometric-signature> | ||
| 1041 | + <biometric-signature name="walking8-1"> | ||
| 1042 | + <presentation Label="walking" file-name="walking/person08_walking_d1_uncomp.avi" /> | ||
| 1043 | + </biometric-signature> | ||
| 1044 | + <biometric-signature name="walking8-2"> | ||
| 1045 | + <presentation Label="walking" file-name="walking/person08_walking_d2_uncomp.avi" /> | ||
| 1046 | + </biometric-signature> | ||
| 1047 | + <biometric-signature name="walking8-3"> | ||
| 1048 | + <presentation Label="walking" file-name="walking/person08_walking_d3_uncomp.avi" /> | ||
| 1049 | + </biometric-signature> | ||
| 1050 | + <biometric-signature name="walking8-4"> | ||
| 1051 | + <presentation Label="walking" file-name="walking/person08_walking_d4_uncomp.avi" /> | ||
| 1052 | + </biometric-signature> | ||
| 1053 | + <biometric-signature name="walking9-1"> | ||
| 1054 | + <presentation Label="walking" file-name="walking/person09_walking_d1_uncomp.avi" /> | ||
| 1055 | + </biometric-signature> | ||
| 1056 | + <biometric-signature name="walking9-2"> | ||
| 1057 | + <presentation Label="walking" file-name="walking/person09_walking_d2_uncomp.avi" /> | ||
| 1058 | + </biometric-signature> | ||
| 1059 | + <biometric-signature name="walking9-3"> | ||
| 1060 | + <presentation Label="walking" file-name="walking/person09_walking_d3_uncomp.avi" /> | ||
| 1061 | + </biometric-signature> | ||
| 1062 | + <biometric-signature name="walking9-4"> | ||
| 1063 | + <presentation Label="walking" file-name="walking/person09_walking_d4_uncomp.avi" /> | ||
| 1064 | + </biometric-signature> | ||
| 1065 | + <biometric-signature name="walking10-1"> | ||
| 1066 | + <presentation Label="walking" file-name="walking/person10_walking_d1_uncomp.avi" /> | ||
| 1067 | + </biometric-signature> | ||
| 1068 | + <biometric-signature name="walking10-2"> | ||
| 1069 | + <presentation Label="walking" file-name="walking/person10_walking_d2_uncomp.avi" /> | ||
| 1070 | + </biometric-signature> | ||
| 1071 | + <biometric-signature name="walking10-3"> | ||
| 1072 | + <presentation Label="walking" file-name="walking/person10_walking_d3_uncomp.avi" /> | ||
| 1073 | + </biometric-signature> | ||
| 1074 | + <biometric-signature name="walking10-4"> | ||
| 1075 | + <presentation Label="walking" file-name="walking/person10_walking_d4_uncomp.avi" /> | ||
| 1076 | + </biometric-signature> | ||
| 1077 | + <biometric-signature name="walking11-1"> | ||
| 1078 | + <presentation Label="walking" file-name="walking/person11_walking_d1_uncomp.avi" /> | ||
| 1079 | + </biometric-signature> | ||
| 1080 | + <biometric-signature name="walking11-2"> | ||
| 1081 | + <presentation Label="walking" file-name="walking/person11_walking_d2_uncomp.avi" /> | ||
| 1082 | + </biometric-signature> | ||
| 1083 | + <biometric-signature name="walking11-3"> | ||
| 1084 | + <presentation Label="walking" file-name="walking/person11_walking_d3_uncomp.avi" /> | ||
| 1085 | + </biometric-signature> | ||
| 1086 | + <biometric-signature name="walking11-4"> | ||
| 1087 | + <presentation Label="walking" file-name="walking/person11_walking_d4_uncomp.avi" /> | ||
| 1088 | + </biometric-signature> | ||
| 1089 | + <biometric-signature name="walking12-1"> | ||
| 1090 | + <presentation Label="walking" file-name="walking/person12_walking_d1_uncomp.avi" /> | ||
| 1091 | + </biometric-signature> | ||
| 1092 | + <biometric-signature name="walking12-2"> | ||
| 1093 | + <presentation Label="walking" file-name="walking/person12_walking_d2_uncomp.avi" /> | ||
| 1094 | + </biometric-signature> | ||
| 1095 | + <biometric-signature name="walking12-3"> | ||
| 1096 | + <presentation Label="walking" file-name="walking/person12_walking_d3_uncomp.avi" /> | ||
| 1097 | + </biometric-signature> | ||
| 1098 | + <biometric-signature name="walking12-4"> | ||
| 1099 | + <presentation Label="walking" file-name="walking/person12_walking_d4_uncomp.avi" /> | ||
| 1100 | + </biometric-signature> | ||
| 1101 | + <biometric-signature name="walking13-1"> | ||
| 1102 | + <presentation Label="walking" file-name="walking/person13_walking_d1_uncomp.avi" /> | ||
| 1103 | + </biometric-signature> | ||
| 1104 | + <biometric-signature name="walking13-2"> | ||
| 1105 | + <presentation Label="walking" file-name="walking/person13_walking_d2_uncomp.avi" /> | ||
| 1106 | + </biometric-signature> | ||
| 1107 | + <biometric-signature name="walking13-3"> | ||
| 1108 | + <presentation Label="walking" file-name="walking/person13_walking_d3_uncomp.avi" /> | ||
| 1109 | + </biometric-signature> | ||
| 1110 | + <biometric-signature name="walking13-4"> | ||
| 1111 | + <presentation Label="walking" file-name="walking/person13_walking_d4_uncomp.avi" /> | ||
| 1112 | + </biometric-signature> | ||
| 1113 | + <biometric-signature name="walking14-1"> | ||
| 1114 | + <presentation Label="walking" file-name="walking/person14_walking_d1_uncomp.avi" /> | ||
| 1115 | + </biometric-signature> | ||
| 1116 | + <biometric-signature name="walking14-2"> | ||
| 1117 | + <presentation Label="walking" file-name="walking/person14_walking_d2_uncomp.avi" /> | ||
| 1118 | + </biometric-signature> | ||
| 1119 | + <biometric-signature name="walking14-3"> | ||
| 1120 | + <presentation Label="walking" file-name="walking/person14_walking_d3_uncomp.avi" /> | ||
| 1121 | + </biometric-signature> | ||
| 1122 | + <biometric-signature name="walking14-4"> | ||
| 1123 | + <presentation Label="walking" file-name="walking/person14_walking_d4_uncomp.avi" /> | ||
| 1124 | + </biometric-signature> | ||
| 1125 | + <biometric-signature name="walking15-1"> | ||
| 1126 | + <presentation Label="walking" file-name="walking/person15_walking_d1_uncomp.avi" /> | ||
| 1127 | + </biometric-signature> | ||
| 1128 | + <biometric-signature name="walking15-2"> | ||
| 1129 | + <presentation Label="walking" file-name="walking/person15_walking_d2_uncomp.avi" /> | ||
| 1130 | + </biometric-signature> | ||
| 1131 | + <biometric-signature name="walking15-3"> | ||
| 1132 | + <presentation Label="walking" file-name="walking/person15_walking_d3_uncomp.avi" /> | ||
| 1133 | + </biometric-signature> | ||
| 1134 | + <biometric-signature name="walking15-4"> | ||
| 1135 | + <presentation Label="walking" file-name="walking/person15_walking_d4_uncomp.avi" /> | ||
| 1136 | + </biometric-signature> | ||
| 1137 | + <biometric-signature name="walking16-1"> | ||
| 1138 | + <presentation Label="walking" file-name="walking/person16_walking_d1_uncomp.avi" /> | ||
| 1139 | + </biometric-signature> | ||
| 1140 | + <biometric-signature name="walking16-2"> | ||
| 1141 | + <presentation Label="walking" file-name="walking/person16_walking_d2_uncomp.avi" /> | ||
| 1142 | + </biometric-signature> | ||
| 1143 | + <biometric-signature name="walking16-3"> | ||
| 1144 | + <presentation Label="walking" file-name="walking/person16_walking_d3_uncomp.avi" /> | ||
| 1145 | + </biometric-signature> | ||
| 1146 | + <biometric-signature name="walking16-4"> | ||
| 1147 | + <presentation Label="walking" file-name="walking/person16_walking_d4_uncomp.avi" /> | ||
| 1148 | + </biometric-signature> | ||
| 1149 | +</biometric-signature-set> |
openbr/core/eval.cpp
| @@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
| 16 | 16 | ||
| 17 | #include "bee.h" | 17 | #include "bee.h" |
| 18 | #include "eval.h" | 18 | #include "eval.h" |
| 19 | +#include "openbr/core/common.h" | ||
| 19 | #include "openbr/core/qtutils.h" | 20 | #include "openbr/core/qtutils.h" |
| 20 | 21 | ||
| 21 | using namespace cv; | 22 | using namespace cv; |
| @@ -255,9 +256,9 @@ struct Counter | @@ -255,9 +256,9 @@ struct Counter | ||
| 255 | } | 256 | } |
| 256 | }; | 257 | }; |
| 257 | 258 | ||
| 258 | -void EvalClassification(const QString &predictedInput, const QString &truthInput, QString predictedProperty, QString truthProperty) | 259 | +void EvalClassification(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty, QString truthProperty) |
| 259 | { | 260 | { |
| 260 | - qDebug("Evaluating classification of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); | 261 | + qDebug("Evaluating classification of %s against %s", qPrintable(predictedGallery), qPrintable(truthGallery)); |
| 261 | 262 | ||
| 262 | if (predictedProperty.isEmpty()) | 263 | if (predictedProperty.isEmpty()) |
| 263 | predictedProperty = "Label"; | 264 | predictedProperty = "Label"; |
| @@ -269,8 +270,8 @@ void EvalClassification(const QString &predictedInput, const QString &truthInput | @@ -269,8 +270,8 @@ void EvalClassification(const QString &predictedInput, const QString &truthInput | ||
| 269 | if (truthProperty.isEmpty()) | 270 | if (truthProperty.isEmpty()) |
| 270 | truthProperty = "Label"; | 271 | truthProperty = "Label"; |
| 271 | 272 | ||
| 272 | - TemplateList predicted(TemplateList::fromGallery(predictedInput)); | ||
| 273 | - TemplateList truth(TemplateList::fromGallery(truthInput)); | 273 | + TemplateList predicted(TemplateList::fromGallery(predictedGallery)); |
| 274 | + TemplateList truth(TemplateList::fromGallery(truthGallery)); | ||
| 274 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); | 275 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); |
| 275 | 276 | ||
| 276 | QHash<QString, Counter> counters; | 277 | QHash<QString, Counter> counters; |
| @@ -383,13 +384,19 @@ static QStringList computeDetectionResults(const QList<ResolvedDetection> &detec | @@ -383,13 +384,19 @@ static QStringList computeDetectionResults(const QList<ResolvedDetection> &detec | ||
| 383 | } | 384 | } |
| 384 | 385 | ||
| 385 | const int keep = qMin(points.size(), Max_Points); | 386 | const int keep = qMin(points.size(), Max_Points); |
| 386 | - if (keep < 2) qFatal("Insufficient points."); | 387 | + if (keep < 1) qFatal("Insufficient points."); |
| 387 | 388 | ||
| 388 | QStringList lines; lines.reserve(keep); | 389 | QStringList lines; lines.reserve(keep); |
| 389 | - for (int i=0; i<keep; i++) { | ||
| 390 | - const DetectionOperatingPoint &point = points[double(i) / double(keep-1) * double(points.size()-1)]; | 390 | + if (keep == 1) { |
| 391 | + const DetectionOperatingPoint &point = points[0]; | ||
| 391 | lines.append(QString("%1ROC, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.FalsePositives), QString::number(point.Recall))); | 392 | lines.append(QString("%1ROC, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.FalsePositives), QString::number(point.Recall))); |
| 392 | lines.append(QString("%1PR, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.Recall), QString::number(point.Precision))); | 393 | lines.append(QString("%1PR, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.Recall), QString::number(point.Precision))); |
| 394 | + } else { | ||
| 395 | + for (int i=0; i<keep; i++) { | ||
| 396 | + const DetectionOperatingPoint &point = points[double(i) / double(keep-1) * double(points.size()-1)]; | ||
| 397 | + lines.append(QString("%1ROC, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.FalsePositives), QString::number(point.Recall))); | ||
| 398 | + lines.append(QString("%1PR, %2, %3").arg(discrete ? "Discrete" : "Continuous", QString::number(point.Recall), QString::number(point.Precision))); | ||
| 399 | + } | ||
| 393 | } | 400 | } |
| 394 | return lines; | 401 | return lines; |
| 395 | } | 402 | } |
| @@ -403,11 +410,11 @@ QString getDetectKey(const TemplateList &templates) | @@ -403,11 +410,11 @@ QString getDetectKey(const TemplateList &templates) | ||
| 403 | return ""; | 410 | return ""; |
| 404 | } | 411 | } |
| 405 | 412 | ||
| 406 | -float EvalDetection(const QString &predictedInput, const QString &truthInput, const QString &csv) | 413 | +float EvalDetection(const QString &predictedGallery, const QString &truthGallery, const QString &csv) |
| 407 | { | 414 | { |
| 408 | - qDebug("Evaluating detection of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); | ||
| 409 | - const TemplateList predicted(TemplateList::fromGallery(predictedInput)); | ||
| 410 | - const TemplateList truth(TemplateList::fromGallery(truthInput)); | 415 | + qDebug("Evaluating detection of %s against %s", qPrintable(predictedGallery), qPrintable(truthGallery)); |
| 416 | + const TemplateList predicted(TemplateList::fromGallery(predictedGallery)); | ||
| 417 | + const TemplateList truth(TemplateList::fromGallery(truthGallery)); | ||
| 411 | 418 | ||
| 412 | // Figure out which metadata field contains a bounding box | 419 | // Figure out which metadata field contains a bounding box |
| 413 | QString truthDetectKey = getDetectKey(truth); | 420 | QString truthDetectKey = getDetectKey(truth); |
| @@ -476,16 +483,55 @@ float EvalDetection(const QString &predictedInput, const QString &truthInput, co | @@ -476,16 +483,55 @@ float EvalDetection(const QString &predictedInput, const QString &truthInput, co | ||
| 476 | return averageOverlap; | 483 | return averageOverlap; |
| 477 | } | 484 | } |
| 478 | 485 | ||
| 479 | -void EvalLandmarking(const QString &predictedInput, const QString &truthInput, const QString &csv) | 486 | +float EvalLandmarking(const QString &predictedGallery, const QString &truthGallery, const QString &csv, int normalizationIndexA, int normalizationIndexB) |
| 480 | { | 487 | { |
| 481 | - (void) predictedInput; | ||
| 482 | - (void) truthInput; | ||
| 483 | - (void) csv; | 488 | + qDebug("Evaluating landmarking of %s against %s", qPrintable(predictedGallery), qPrintable(truthGallery)); |
| 489 | + const TemplateList predicted(TemplateList::fromGallery(predictedGallery)); | ||
| 490 | + const TemplateList truth(TemplateList::fromGallery(truthGallery)); | ||
| 491 | + const QStringList predictedNames = File::get<QString>(predicted, "name"); | ||
| 492 | + const QStringList truthNames = File::get<QString>(truth, "name"); | ||
| 493 | + | ||
| 494 | + QList< QList<float> > pointErrors; | ||
| 495 | + for (int i=0; i<predicted.size(); i++) { | ||
| 496 | + const QString &predictedName = predictedNames[i]; | ||
| 497 | + const int truthIndex = truthNames.indexOf(predictedName); | ||
| 498 | + if (truthIndex == -1) qFatal("Could not identify ground truth for file: %s", qPrintable(predictedName)); | ||
| 499 | + const QList<QPointF> predictedPoints = predicted[i].file.points(); | ||
| 500 | + const QList<QPointF> truthPoints = truth[truthIndex].file.points(); | ||
| 501 | + if (predictedPoints.size() != truthPoints.size()) qFatal("Points size mismatch for file: %s", qPrintable(predictedName)); | ||
| 502 | + while (pointErrors.size() < predictedPoints.size()) | ||
| 503 | + pointErrors.append(QList<float>()); | ||
| 504 | + if (normalizationIndexA >= truthPoints.size()) qFatal("Normalization index A is out of range."); | ||
| 505 | + if (normalizationIndexB >= truthPoints.size()) qFatal("Normalization index B is out of range."); | ||
| 506 | + const float normalizedLength = QtUtils::euclideanLength(truthPoints[normalizationIndexB] - truthPoints[normalizationIndexA]); | ||
| 507 | + for (int j=0; j<predictedPoints.size(); j++) | ||
| 508 | + pointErrors[j].append(QtUtils::euclideanLength(predictedPoints[j] - truthPoints[j])/normalizedLength); | ||
| 509 | + } | ||
| 510 | + | ||
| 511 | + QList<float> averagePointErrors; averagePointErrors.reserve(pointErrors.size()); | ||
| 512 | + for (int i=0; i<pointErrors.size(); i++) { | ||
| 513 | + std::sort(pointErrors[i].begin(), pointErrors[i].end()); | ||
| 514 | + averagePointErrors.append(Common::Mean(pointErrors[i])); | ||
| 515 | + } | ||
| 516 | + const float averagePointError = Common::Mean(averagePointErrors); | ||
| 517 | + | ||
| 518 | + QStringList lines; | ||
| 519 | + lines.append("Plot,X,Y"); | ||
| 520 | + for (int i=0; i<pointErrors.size(); i++) { | ||
| 521 | + const QList<float> &pointError = pointErrors[i]; | ||
| 522 | + const int keep = qMin(Max_Points, pointError.size()); | ||
| 523 | + for (int j=0; j<keep; j++) | ||
| 524 | + lines.append(QString("Box,%1,%2").arg(QString::number(i), QString::number(pointError[j*(pointError.size()-1)/(keep-1)]))); | ||
| 525 | + } | ||
| 526 | + | ||
| 527 | + QtUtils::writeFile(csv, lines); | ||
| 528 | + qDebug("Average Error: %.3f", averagePointError); | ||
| 529 | + return averagePointError; | ||
| 484 | } | 530 | } |
| 485 | 531 | ||
| 486 | -void EvalRegression(const QString &predictedInput, const QString &truthInput, QString predictedProperty, QString truthProperty) | 532 | +void EvalRegression(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty, QString truthProperty) |
| 487 | { | 533 | { |
| 488 | - qDebug("Evaluating regression of %s against %s", qPrintable(predictedInput), qPrintable(truthInput)); | 534 | + qDebug("Evaluating regression of %s against %s", qPrintable(predictedGallery), qPrintable(truthGallery)); |
| 489 | 535 | ||
| 490 | if (predictedProperty.isEmpty()) | 536 | if (predictedProperty.isEmpty()) |
| 491 | predictedProperty = "Regressor"; | 537 | predictedProperty = "Regressor"; |
| @@ -497,8 +543,8 @@ void EvalRegression(const QString &predictedInput, const QString &truthInput, QS | @@ -497,8 +543,8 @@ void EvalRegression(const QString &predictedInput, const QString &truthInput, QS | ||
| 497 | if (truthProperty.isEmpty()) | 543 | if (truthProperty.isEmpty()) |
| 498 | predictedProperty = "Regressand"; | 544 | predictedProperty = "Regressand"; |
| 499 | 545 | ||
| 500 | - const TemplateList predicted(TemplateList::fromGallery(predictedInput)); | ||
| 501 | - const TemplateList truth(TemplateList::fromGallery(truthInput)); | 546 | + const TemplateList predicted(TemplateList::fromGallery(predictedGallery)); |
| 547 | + const TemplateList truth(TemplateList::fromGallery(truthGallery)); | ||
| 502 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); | 548 | if (predicted.size() != truth.size()) qFatal("Input size mismatch."); |
| 503 | 549 | ||
| 504 | float rmsError = 0; | 550 | float rmsError = 0; |
openbr/core/eval.h
| @@ -26,10 +26,10 @@ namespace br | @@ -26,10 +26,10 @@ namespace br | ||
| 26 | float Evaluate(const QString &simmat, const QString &mask = "", const QString &csv = ""); // Returns TAR @ FAR = 0.001 | 26 | float Evaluate(const QString &simmat, const QString &mask = "", const QString &csv = ""); // Returns TAR @ FAR = 0.001 |
| 27 | float Evaluate(const cv::Mat &scores, const FileList &target, const FileList &query, const QString &csv = "", int parition = 0); | 27 | float Evaluate(const cv::Mat &scores, const FileList &target, const FileList &query, const QString &csv = "", int parition = 0); |
| 28 | float Evaluate(const cv::Mat &scores, const cv::Mat &masks, const QString &csv = ""); | 28 | float Evaluate(const cv::Mat &scores, const cv::Mat &masks, const QString &csv = ""); |
| 29 | - void EvalClassification(const QString &predictedInput, const QString &truthInput, QString predictedProperty="", QString truthProperty=""); | ||
| 30 | - float EvalDetection(const QString &predictedInput, const QString &truthInput, const QString &csv = ""); // Return average overlap | ||
| 31 | - void EvalLandmarking(const QString &predictedInput, const QString &truthInput, const QString &csv = ""); | ||
| 32 | - void EvalRegression(const QString &predictedInput, const QString &truthInput, QString predictedProperty="", QString truthProperty=""); | 29 | + void EvalClassification(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = ""); |
| 30 | + float EvalDetection(const QString &predictedGallery, const QString &truthGallery, const QString &csv = ""); // Return average overlap | ||
| 31 | + float EvalLandmarking(const QString &predictedGallery, const QString &truthGallery, const QString &csv = "", int normalizationIndexA = 0, int normalizationIndexB = 1); // Return average error | ||
| 32 | + void EvalRegression(const QString &predictedGallery, const QString &truthGallery, QString predictedProperty = "", QString truthProperty = ""); | ||
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | #endif // __EVAL_H | 35 | #endif // __EVAL_H |
openbr/core/plot.cpp
| @@ -271,6 +271,34 @@ bool Plot(const QStringList &files, const File &destination, bool show) | @@ -271,6 +271,34 @@ bool Plot(const QStringList &files, const File &destination, bool show) | ||
| 271 | return p.finalize(show); | 271 | return p.finalize(show); |
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | +//Check if only one ROC point is in the file | ||
| 275 | +bool fileHasSinglePoint(const QString &evalFile) { | ||
| 276 | + QFile file(evalFile); | ||
| 277 | + bool success = file.open(QFile::ReadOnly); | ||
| 278 | + if (!success) qFatal("Failed to open %s for reading.", qPrintable(evalFile)); | ||
| 279 | + QStringList lines = QString(file.readAll()).split("\n"); | ||
| 280 | + file.close(); | ||
| 281 | + | ||
| 282 | + int rocCnt = 0; | ||
| 283 | + foreach (const QString &line, lines) { | ||
| 284 | + if (line.contains("DiscreteROC")) { | ||
| 285 | + rocCnt++; | ||
| 286 | + } | ||
| 287 | + if (rocCnt > 1) | ||
| 288 | + return false; | ||
| 289 | + } | ||
| 290 | + | ||
| 291 | + return true; | ||
| 292 | +} | ||
| 293 | + | ||
| 294 | +//Check all files to see if any single file has only have one ROC point | ||
| 295 | +bool filesHaveSinglePoint(const QStringList &files) { | ||
| 296 | + foreach (const File &file, files) | ||
| 297 | + if (fileHasSinglePoint(file)) | ||
| 298 | + return true; | ||
| 299 | + return false; | ||
| 300 | +} | ||
| 301 | + | ||
| 274 | bool PlotDetection(const QStringList &files, const File &destination, bool show) | 302 | bool PlotDetection(const QStringList &files, const File &destination, bool show) |
| 275 | { | 303 | { |
| 276 | qDebug("Plotting %d detection file(s) to %s", files.size(), qPrintable(destination)); | 304 | qDebug("Plotting %d detection file(s) to %s", files.size(), qPrintable(destination)); |
| @@ -287,8 +315,12 @@ bool PlotDetection(const QStringList &files, const File &destination, bool show) | @@ -287,8 +315,12 @@ bool PlotDetection(const QStringList &files, const File &destination, bool show) | ||
| 287 | "rm(data)\n" | 315 | "rm(data)\n" |
| 288 | "\n"); | 316 | "\n"); |
| 289 | 317 | ||
| 318 | + QString plotType("line"); | ||
| 319 | + if (filesHaveSinglePoint(files)) | ||
| 320 | + plotType = QString("point"); | ||
| 321 | + | ||
| 290 | foreach (const QString &type, QStringList() << "Discrete" << "Continuous") | 322 | foreach (const QString &type, QStringList() << "Discrete" << "Continuous") |
| 291 | - p.file.write(qPrintable(QString("qplot(X, Y, data=%1ROC%2").arg(type, (p.major.smooth || p.minor.smooth) ? ", geom=\"smooth\", method=loess, level=0.99" : ", geom=\"line\"") + | 323 | + p.file.write(qPrintable(QString("qplot(X, Y, data=%1ROC%2").arg(type, (p.major.smooth || p.minor.smooth) ? ", geom=\"smooth\", method=loess, level=0.99" : QString(", geom=\"%1\"").arg(plotType)) + |
| 292 | (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + | 324 | (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + |
| 293 | (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + | 325 | (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + |
| 294 | QString(", xlab=\"False Accepts\", ylab=\"True Accept Rate\") + theme_minimal()") + | 326 | QString(", xlab=\"False Accepts\", ylab=\"True Accept Rate\") + theme_minimal()") + |
| @@ -297,7 +329,7 @@ bool PlotDetection(const QStringList &files, const File &destination, bool show) | @@ -297,7 +329,7 @@ bool PlotDetection(const QStringList &files, const File &destination, bool show) | ||
| 297 | QString(" + scale_x_log10() + scale_y_continuous(labels=percent) + annotation_logticks(sides=\"b\") + ggtitle(\"%1\")\n\n").arg(type))); | 329 | QString(" + scale_x_log10() + scale_y_continuous(labels=percent) + annotation_logticks(sides=\"b\") + ggtitle(\"%1\")\n\n").arg(type))); |
| 298 | 330 | ||
| 299 | foreach (const QString &type, QStringList() << "Discrete" << "Continuous") | 331 | foreach (const QString &type, QStringList() << "Discrete" << "Continuous") |
| 300 | - p.file.write(qPrintable(QString("qplot(X, Y, data=%1PR%2").arg(type, (p.major.smooth || p.minor.smooth) ? ", geom=\"smooth\", method=loess, level=0.99" : ", geom=\"line\"") + | 332 | + p.file.write(qPrintable(QString("qplot(X, Y, data=%1PR%2").arg(type, (p.major.smooth || p.minor.smooth) ? ", geom=\"smooth\", method=loess, level=0.99" : QString(", geom=\"%1\"").arg(plotType)) + |
| 301 | (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + | 333 | (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + |
| 302 | (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + | 334 | (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + |
| 303 | QString(", xlab=\"Recall\", ylab=\"Precision\") + theme_minimal()") + | 335 | QString(", xlab=\"Recall\", ylab=\"Precision\") + theme_minimal()") + |
openbr/core/qtutils.cpp
| @@ -33,7 +33,10 @@ | @@ -33,7 +33,10 @@ | ||
| 33 | 33 | ||
| 34 | using namespace br; | 34 | using namespace br; |
| 35 | 35 | ||
| 36 | -QStringList QtUtils::getFiles(QDir dir, bool recursive) | 36 | +namespace QtUtils |
| 37 | +{ | ||
| 38 | + | ||
| 39 | +QStringList getFiles(QDir dir, bool recursive) | ||
| 37 | { | 40 | { |
| 38 | dir = QDir(dir.canonicalPath()); | 41 | dir = QDir(dir.canonicalPath()); |
| 39 | 42 | ||
| @@ -51,7 +54,7 @@ QStringList QtUtils::getFiles(QDir dir, bool recursive) | @@ -51,7 +54,7 @@ QStringList QtUtils::getFiles(QDir dir, bool recursive) | ||
| 51 | return files; | 54 | return files; |
| 52 | } | 55 | } |
| 53 | 56 | ||
| 54 | -QStringList QtUtils::getFiles(const QString ®exp) | 57 | +QStringList getFiles(const QString ®exp) |
| 55 | { | 58 | { |
| 56 | QFileInfo fileInfo(regexp); | 59 | QFileInfo fileInfo(regexp); |
| 57 | QDir dir(fileInfo.dir()); | 60 | QDir dir(fileInfo.dir()); |
| @@ -65,14 +68,14 @@ QStringList QtUtils::getFiles(const QString &regexp) | @@ -65,14 +68,14 @@ QStringList QtUtils::getFiles(const QString &regexp) | ||
| 65 | return files; | 68 | return files; |
| 66 | } | 69 | } |
| 67 | 70 | ||
| 68 | -QStringList QtUtils::readLines(const QString &file) | 71 | +QStringList readLines(const QString &file) |
| 69 | { | 72 | { |
| 70 | QStringList lines; | 73 | QStringList lines; |
| 71 | readFile(file, lines); | 74 | readFile(file, lines); |
| 72 | return lines; | 75 | return lines; |
| 73 | } | 76 | } |
| 74 | 77 | ||
| 75 | -void QtUtils::readFile(const QString &file, QStringList &lines) | 78 | +void readFile(const QString &file, QStringList &lines) |
| 76 | { | 79 | { |
| 77 | QByteArray data; | 80 | QByteArray data; |
| 78 | readFile(file, data); | 81 | readFile(file, data); |
| @@ -81,7 +84,7 @@ void QtUtils::readFile(const QString &file, QStringList &lines) | @@ -81,7 +84,7 @@ void QtUtils::readFile(const QString &file, QStringList &lines) | ||
| 81 | lines[i] = lines[i].simplified(); | 84 | lines[i] = lines[i].simplified(); |
| 82 | } | 85 | } |
| 83 | 86 | ||
| 84 | -void QtUtils::readFile(const QString &file, QByteArray &data, bool uncompress) | 87 | +void readFile(const QString &file, QByteArray &data, bool uncompress) |
| 85 | { | 88 | { |
| 86 | QFile f(file); | 89 | QFile f(file); |
| 87 | if (!f.open(QFile::ReadOnly)) { | 90 | if (!f.open(QFile::ReadOnly)) { |
| @@ -93,17 +96,17 @@ void QtUtils::readFile(const QString &file, QByteArray &data, bool uncompress) | @@ -93,17 +96,17 @@ void QtUtils::readFile(const QString &file, QByteArray &data, bool uncompress) | ||
| 93 | f.close(); | 96 | f.close(); |
| 94 | } | 97 | } |
| 95 | 98 | ||
| 96 | -void QtUtils::writeFile(const QString &file, const QStringList &lines) | 99 | +void writeFile(const QString &file, const QStringList &lines) |
| 97 | { | 100 | { |
| 98 | writeFile(file, lines.join("\n")); | 101 | writeFile(file, lines.join("\n")); |
| 99 | } | 102 | } |
| 100 | 103 | ||
| 101 | -void QtUtils::writeFile(const QString &file, const QString &data) | 104 | +void writeFile(const QString &file, const QString &data) |
| 102 | { | 105 | { |
| 103 | writeFile(file, data.toLocal8Bit()); | 106 | writeFile(file, data.toLocal8Bit()); |
| 104 | } | 107 | } |
| 105 | 108 | ||
| 106 | -void QtUtils::writeFile(const QString &file, const QByteArray &data, int compression) | 109 | +void writeFile(const QString &file, const QByteArray &data, int compression) |
| 107 | { | 110 | { |
| 108 | if (file.isEmpty()) return; | 111 | if (file.isEmpty()) return; |
| 109 | const QString baseName = QFileInfo(file).baseName(); | 112 | const QString baseName = QFileInfo(file).baseName(); |
| @@ -122,7 +125,7 @@ void QtUtils::writeFile(const QString &file, const QByteArray &data, int compres | @@ -122,7 +125,7 @@ void QtUtils::writeFile(const QString &file, const QByteArray &data, int compres | ||
| 122 | } | 125 | } |
| 123 | } | 126 | } |
| 124 | 127 | ||
| 125 | -void QtUtils::copyFile(const QString &src, const QString &dst) | 128 | +void copyFile(const QString &src, const QString &dst) |
| 126 | { | 129 | { |
| 127 | touchDir(QFileInfo(dst)); | 130 | touchDir(QFileInfo(dst)); |
| 128 | if (!QFile::copy(src, dst)) { | 131 | if (!QFile::copy(src, dst)) { |
| @@ -131,24 +134,24 @@ void QtUtils::copyFile(const QString &src, const QString &dst) | @@ -131,24 +134,24 @@ void QtUtils::copyFile(const QString &src, const QString &dst) | ||
| 131 | } | 134 | } |
| 132 | } | 135 | } |
| 133 | 136 | ||
| 134 | -void QtUtils::touchDir(const QDir &dir) | 137 | +void touchDir(const QDir &dir) |
| 135 | { | 138 | { |
| 136 | if (dir.exists(".")) return; | 139 | if (dir.exists(".")) return; |
| 137 | if (!dir.mkpath(".")) | 140 | if (!dir.mkpath(".")) |
| 138 | qFatal("Unable to create path to dir %s", qPrintable(dir.absolutePath())); | 141 | qFatal("Unable to create path to dir %s", qPrintable(dir.absolutePath())); |
| 139 | } | 142 | } |
| 140 | 143 | ||
| 141 | -void QtUtils::touchDir(const QFile &file) | 144 | +void touchDir(const QFile &file) |
| 142 | { | 145 | { |
| 143 | touchDir(QFileInfo(file)); | 146 | touchDir(QFileInfo(file)); |
| 144 | } | 147 | } |
| 145 | 148 | ||
| 146 | -void QtUtils::touchDir(const QFileInfo &fileInfo) | 149 | +void touchDir(const QFileInfo &fileInfo) |
| 147 | { | 150 | { |
| 148 | touchDir(fileInfo.dir()); | 151 | touchDir(fileInfo.dir()); |
| 149 | } | 152 | } |
| 150 | 153 | ||
| 151 | -void QtUtils::emptyDir(QDir &dir) | 154 | +void emptyDir(QDir &dir) |
| 152 | { | 155 | { |
| 153 | foreach (const QString &folder, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks)) { | 156 | foreach (const QString &folder, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks)) { |
| 154 | QDir subdir(dir); | 157 | QDir subdir(dir); |
| @@ -166,13 +169,13 @@ void QtUtils::emptyDir(QDir &dir) | @@ -166,13 +169,13 @@ void QtUtils::emptyDir(QDir &dir) | ||
| 166 | dir.remove(symlink); | 169 | dir.remove(symlink); |
| 167 | } | 170 | } |
| 168 | 171 | ||
| 169 | -void QtUtils::deleteDir(QDir &dir) | 172 | +void deleteDir(QDir &dir) |
| 170 | { | 173 | { |
| 171 | emptyDir(dir); | 174 | emptyDir(dir); |
| 172 | dir.rmdir("."); | 175 | dir.rmdir("."); |
| 173 | } | 176 | } |
| 174 | 177 | ||
| 175 | -QString QtUtils::find(const QString &file, const QString &alt) | 178 | +QString find(const QString &file, const QString &alt) |
| 176 | { | 179 | { |
| 177 | if (QFileInfo(file).exists()) return file; | 180 | if (QFileInfo(file).exists()) return file; |
| 178 | if (QFileInfo(alt).exists()) return alt; | 181 | if (QFileInfo(alt).exists()) return alt; |
| @@ -180,28 +183,28 @@ QString QtUtils::find(const QString &file, const QString &alt) | @@ -180,28 +183,28 @@ QString QtUtils::find(const QString &file, const QString &alt) | ||
| 180 | return ""; | 183 | return ""; |
| 181 | } | 184 | } |
| 182 | 185 | ||
| 183 | -bool QtUtils::toBool(const QString &string) | 186 | +bool toBool(const QString &string) |
| 184 | { | 187 | { |
| 185 | bool ok; | 188 | bool ok; |
| 186 | bool result = (bool)string.toInt(&ok); if (!ok) qFatal("Expected integer value, got %s.", qPrintable(string)); | 189 | bool result = (bool)string.toInt(&ok); if (!ok) qFatal("Expected integer value, got %s.", qPrintable(string)); |
| 187 | return result; | 190 | return result; |
| 188 | } | 191 | } |
| 189 | 192 | ||
| 190 | -int QtUtils::toInt(const QString &string) | 193 | +int toInt(const QString &string) |
| 191 | { | 194 | { |
| 192 | bool ok; | 195 | bool ok; |
| 193 | int result = string.toInt(&ok); if (!ok) qFatal("Expected integer value, got %s.", qPrintable(string)); | 196 | int result = string.toInt(&ok); if (!ok) qFatal("Expected integer value, got %s.", qPrintable(string)); |
| 194 | return result; | 197 | return result; |
| 195 | } | 198 | } |
| 196 | 199 | ||
| 197 | -float QtUtils::toFloat(const QString &string) | 200 | +float toFloat(const QString &string) |
| 198 | { | 201 | { |
| 199 | bool ok; | 202 | bool ok; |
| 200 | float result = string.toFloat(&ok); if (!ok) qFatal("Expected floating point value, got %s.", qPrintable(string)); | 203 | float result = string.toFloat(&ok); if (!ok) qFatal("Expected floating point value, got %s.", qPrintable(string)); |
| 201 | return result; | 204 | return result; |
| 202 | } | 205 | } |
| 203 | 206 | ||
| 204 | -QList<float> QtUtils::toFloats(const QStringList &strings) | 207 | +QList<float> toFloats(const QStringList &strings) |
| 205 | { | 208 | { |
| 206 | QList<float> floats; | 209 | QList<float> floats; |
| 207 | bool ok; | 210 | bool ok; |
| @@ -212,7 +215,7 @@ QList<float> QtUtils::toFloats(const QStringList &strings) | @@ -212,7 +215,7 @@ QList<float> QtUtils::toFloats(const QStringList &strings) | ||
| 212 | return floats; | 215 | return floats; |
| 213 | } | 216 | } |
| 214 | 217 | ||
| 215 | -QStringList QtUtils::toStringList(const QList<float> &values) | 218 | +QStringList toStringList(const QList<float> &values) |
| 216 | { | 219 | { |
| 217 | QStringList result; result.reserve(values.size()); | 220 | QStringList result; result.reserve(values.size()); |
| 218 | foreach (float value, values) | 221 | foreach (float value, values) |
| @@ -220,7 +223,7 @@ QStringList QtUtils::toStringList(const QList<float> &values) | @@ -220,7 +223,7 @@ QStringList QtUtils::toStringList(const QList<float> &values) | ||
| 220 | return result; | 223 | return result; |
| 221 | } | 224 | } |
| 222 | 225 | ||
| 223 | -QStringList QtUtils::toStringList(const std::vector<std::string> &string_list) | 226 | +QStringList toStringList(const std::vector<std::string> &string_list) |
| 224 | { | 227 | { |
| 225 | QStringList result; | 228 | QStringList result; |
| 226 | foreach (const std::string &string, string_list) | 229 | foreach (const std::string &string, string_list) |
| @@ -228,7 +231,7 @@ QStringList QtUtils::toStringList(const std::vector<std::string> &string_list) | @@ -228,7 +231,7 @@ QStringList QtUtils::toStringList(const std::vector<std::string> &string_list) | ||
| 228 | return result; | 231 | return result; |
| 229 | } | 232 | } |
| 230 | 233 | ||
| 231 | -QStringList QtUtils::toStringList(int num_strings, const char *strings[]) | 234 | +QStringList toStringList(int num_strings, const char *strings[]) |
| 232 | { | 235 | { |
| 233 | QStringList result; | 236 | QStringList result; |
| 234 | for (int i=0; i<num_strings; i++) | 237 | for (int i=0; i<num_strings; i++) |
| @@ -236,13 +239,13 @@ QStringList QtUtils::toStringList(int num_strings, const char *strings[]) | @@ -236,13 +239,13 @@ QStringList QtUtils::toStringList(int num_strings, const char *strings[]) | ||
| 236 | return result; | 239 | return result; |
| 237 | } | 240 | } |
| 238 | 241 | ||
| 239 | -QString QtUtils::shortTextHash(QString string) | 242 | +QString shortTextHash(QString string) |
| 240 | { | 243 | { |
| 241 | string.remove(QRegExp("[{}<>&]")); | 244 | string.remove(QRegExp("[{}<>&]")); |
| 242 | return QString(QCryptographicHash::hash(qPrintable(string), QCryptographicHash::Md5).toBase64()).remove(QRegExp("[^a-zA-Z1-9]")).left(6); | 245 | return QString(QCryptographicHash::hash(qPrintable(string), QCryptographicHash::Md5).toBase64()).remove(QRegExp("[^a-zA-Z1-9]")).left(6); |
| 243 | } | 246 | } |
| 244 | 247 | ||
| 245 | -QStringList QtUtils::parse(QString args, char split, bool *ok) | 248 | +QStringList parse(QString args, char split, bool *ok) |
| 246 | { | 249 | { |
| 247 | if (args.isEmpty()) return QStringList(); | 250 | if (args.isEmpty()) return QStringList(); |
| 248 | 251 | ||
| @@ -295,7 +298,7 @@ QStringList QtUtils::parse(QString args, char split, bool *ok) | @@ -295,7 +298,7 @@ QStringList QtUtils::parse(QString args, char split, bool *ok) | ||
| 295 | return words; | 298 | return words; |
| 296 | } | 299 | } |
| 297 | 300 | ||
| 298 | -void QtUtils::checkArgsSize(const QString &name, const QStringList &args, int min, int max) | 301 | +void checkArgsSize(const QString &name, const QStringList &args, int min, int max) |
| 299 | { | 302 | { |
| 300 | if (max == -1) max = std::numeric_limits<int>::max(); | 303 | if (max == -1) max = std::numeric_limits<int>::max(); |
| 301 | if (max == 0) max = min; | 304 | if (max == 0) max = min; |
| @@ -303,7 +306,7 @@ void QtUtils::checkArgsSize(const QString &name, const QStringList &args, int mi | @@ -303,7 +306,7 @@ void QtUtils::checkArgsSize(const QString &name, const QStringList &args, int mi | ||
| 303 | if (args.size() > max) qFatal("%s expects no more than %d arguments, got %d", qPrintable(name), max, args.size()); | 306 | if (args.size() > max) qFatal("%s expects no more than %d arguments, got %d", qPrintable(name), max, args.size()); |
| 304 | } | 307 | } |
| 305 | 308 | ||
| 306 | -QPointF QtUtils::toPoint(const QString &string, bool *ok) | 309 | +QPointF toPoint(const QString &string, bool *ok) |
| 307 | { | 310 | { |
| 308 | if (string.startsWith('(') && string.endsWith(')')) { | 311 | if (string.startsWith('(') && string.endsWith(')')) { |
| 309 | bool okParse; | 312 | bool okParse; |
| @@ -324,7 +327,7 @@ QPointF QtUtils::toPoint(const QString &string, bool *ok) | @@ -324,7 +327,7 @@ QPointF QtUtils::toPoint(const QString &string, bool *ok) | ||
| 324 | return QPointF(); | 327 | return QPointF(); |
| 325 | } | 328 | } |
| 326 | 329 | ||
| 327 | -QRectF QtUtils::toRect(const QString &string, bool *ok) | 330 | +QRectF toRect(const QString &string, bool *ok) |
| 328 | { | 331 | { |
| 329 | if (string.startsWith('(') && string.endsWith(')')) { | 332 | if (string.startsWith('(') && string.endsWith(')')) { |
| 330 | bool okParse; | 333 | bool okParse; |
| @@ -347,7 +350,7 @@ QRectF QtUtils::toRect(const QString &string, bool *ok) | @@ -347,7 +350,7 @@ QRectF QtUtils::toRect(const QString &string, bool *ok) | ||
| 347 | return QRectF(); | 350 | return QRectF(); |
| 348 | } | 351 | } |
| 349 | 352 | ||
| 350 | -QStringList QtUtils::naturalSort(const QStringList &strings) | 353 | +QStringList naturalSort(const QStringList &strings) |
| 351 | { | 354 | { |
| 352 | QList<std::string> stdStrings; stdStrings.reserve(strings.size()); | 355 | QList<std::string> stdStrings; stdStrings.reserve(strings.size()); |
| 353 | foreach (const QString &string, strings) | 356 | foreach (const QString &string, strings) |
| @@ -362,7 +365,7 @@ QStringList QtUtils::naturalSort(const QStringList &strings) | @@ -362,7 +365,7 @@ QStringList QtUtils::naturalSort(const QStringList &strings) | ||
| 362 | return result; | 365 | return result; |
| 363 | } | 366 | } |
| 364 | 367 | ||
| 365 | -bool QtUtils::runRScript(const QString &file) | 368 | +bool runRScript(const QString &file) |
| 366 | { | 369 | { |
| 367 | QProcess RScript; | 370 | QProcess RScript; |
| 368 | RScript.start("Rscript", QStringList() << file); | 371 | RScript.start("Rscript", QStringList() << file); |
| @@ -374,7 +377,7 @@ bool QtUtils::runRScript(const QString &file) | @@ -374,7 +377,7 @@ bool QtUtils::runRScript(const QString &file) | ||
| 374 | return result; | 377 | return result; |
| 375 | } | 378 | } |
| 376 | 379 | ||
| 377 | -bool QtUtils::runDot(const QString &file) | 380 | +bool runDot(const QString &file) |
| 378 | { | 381 | { |
| 379 | QProcess dot; | 382 | QProcess dot; |
| 380 | dot.start("dot -Tpdf -O " + file); | 383 | dot.start("dot -Tpdf -O " + file); |
| @@ -382,7 +385,7 @@ bool QtUtils::runDot(const QString &file) | @@ -382,7 +385,7 @@ bool QtUtils::runDot(const QString &file) | ||
| 382 | return ((dot.exitCode() == 0) && (dot.error() == QProcess::UnknownError)); | 385 | return ((dot.exitCode() == 0) && (dot.error() == QProcess::UnknownError)); |
| 383 | } | 386 | } |
| 384 | 387 | ||
| 385 | -void QtUtils::showFile(const QString &file) | 388 | +void showFile(const QString &file) |
| 386 | { | 389 | { |
| 387 | #ifndef BR_EMBEDDED | 390 | #ifndef BR_EMBEDDED |
| 388 | (void) file; | 391 | (void) file; |
| @@ -393,7 +396,7 @@ void QtUtils::showFile(const QString &file) | @@ -393,7 +396,7 @@ void QtUtils::showFile(const QString &file) | ||
| 393 | #endif // BR_EMBEDDED | 396 | #endif // BR_EMBEDDED |
| 394 | } | 397 | } |
| 395 | 398 | ||
| 396 | -QString QtUtils::toString(const QVariant &variant) | 399 | +QString toString(const QVariant &variant) |
| 397 | { | 400 | { |
| 398 | if (variant.canConvert(QVariant::String)) return variant.toString(); | 401 | if (variant.canConvert(QVariant::String)) return variant.toString(); |
| 399 | else if(variant.canConvert(QVariant::PointF)) return QString("(%1,%2)").arg(QString::number(qvariant_cast<QPointF>(variant).x()), | 402 | else if(variant.canConvert(QVariant::PointF)) return QString("(%1,%2)").arg(QString::number(qvariant_cast<QPointF>(variant).x()), |
| @@ -404,3 +407,11 @@ QString QtUtils::toString(const QVariant &variant) | @@ -404,3 +407,11 @@ QString QtUtils::toString(const QVariant &variant) | ||
| 404 | QString::number(qvariant_cast<QRectF>(variant).height())); | 407 | QString::number(qvariant_cast<QRectF>(variant).height())); |
| 405 | return QString(); | 408 | return QString(); |
| 406 | } | 409 | } |
| 410 | + | ||
| 411 | +float euclideanLength(const QPointF &point) | ||
| 412 | +{ | ||
| 413 | + return sqrt(pow(point.x(), 2) + pow(point.y(), 2)); | ||
| 414 | +} | ||
| 415 | + | ||
| 416 | +} // namespace QtUtils | ||
| 417 | + |
openbr/core/qtutils.h
| @@ -73,6 +73,9 @@ namespace QtUtils | @@ -73,6 +73,9 @@ namespace QtUtils | ||
| 73 | 73 | ||
| 74 | /**** Variant Utilities ****/ | 74 | /**** Variant Utilities ****/ |
| 75 | QString toString(const QVariant &variant); | 75 | QString toString(const QVariant &variant); |
| 76 | + | ||
| 77 | + /**** Point Utilities ****/ | ||
| 78 | + float euclideanLength(const QPointF &point); | ||
| 76 | } | 79 | } |
| 77 | 80 | ||
| 78 | #endif // __QTUTILS_H | 81 | #endif // __QTUTILS_H |
openbr/openbr.cpp
| @@ -87,9 +87,9 @@ float br_eval_detection(const char *predicted_gallery, const char *truth_gallery | @@ -87,9 +87,9 @@ float br_eval_detection(const char *predicted_gallery, const char *truth_gallery | ||
| 87 | return EvalDetection(predicted_gallery, truth_gallery, csv); | 87 | return EvalDetection(predicted_gallery, truth_gallery, csv); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | -void br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv) | 90 | +float br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv, int normalization_index_a, int normalization_index_b) |
| 91 | { | 91 | { |
| 92 | - return EvalLandmarking(predicted_gallery, truth_gallery, csv); | 92 | + return EvalLandmarking(predicted_gallery, truth_gallery, csv, normalization_index_a, normalization_index_b); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | void br_eval_regression(const char *predicted_gallery, const char *truth_gallery, const char * predicted_property, const char * truth_property) | 95 | void br_eval_regression(const char *predicted_gallery, const char *truth_gallery, const char * predicted_property, const char * truth_property) |
openbr/openbr.h
| @@ -173,8 +173,10 @@ BR_EXPORT float br_eval_detection(const char *predicted_gallery, const char *tru | @@ -173,8 +173,10 @@ BR_EXPORT float br_eval_detection(const char *predicted_gallery, const char *tru | ||
| 173 | * \param predicted_gallery The predicted br::Gallery. | 173 | * \param predicted_gallery The predicted br::Gallery. |
| 174 | * \param truth_gallery The ground truth br::Gallery. | 174 | * \param truth_gallery The ground truth br::Gallery. |
| 175 | * \param csv Optional \c .csv file to contain performance metrics. | 175 | * \param csv Optional \c .csv file to contain performance metrics. |
| 176 | + * \param normalization_index_a Optional first index in the list of points to use for normalization. | ||
| 177 | + * \param normalization_index_b Optional second index in the list of points to use for normalization. | ||
| 176 | */ | 178 | */ |
| 177 | -BR_EXPORT void br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv = ""); | 179 | +BR_EXPORT float br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv = "", int normalization_index_a = 0, int normalization_index_b = 1); |
| 178 | 180 | ||
| 179 | /*! | 181 | /*! |
| 180 | * \brief Evaluates regression accuracy to disk. | 182 | * \brief Evaluates regression accuracy to disk. |
openbr/openbr_plugin.cpp
| @@ -127,12 +127,12 @@ QString File::resolved() const | @@ -127,12 +127,12 @@ QString File::resolved() const | ||
| 127 | 127 | ||
| 128 | bool File::contains(const QString &key) const | 128 | bool File::contains(const QString &key) const |
| 129 | { | 129 | { |
| 130 | - return m_metadata.contains(key) || Globals->contains(key); | 130 | + return m_metadata.contains(key) || Globals->contains(key) || key == "name"; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | QVariant File::value(const QString &key) const | 133 | QVariant File::value(const QString &key) const |
| 134 | { | 134 | { |
| 135 | - return m_metadata.contains(key) ? m_metadata.value(key) : Globals->property(qPrintable(key)); | 135 | + return m_metadata.contains(key) ? m_metadata.value(key) : (key == "name" ? name : Globals->property(qPrintable(key))); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | QVariant File::parse(const QString &value) | 138 | QVariant File::parse(const QString &value) |
openbr/openbr_plugin.h
| @@ -138,6 +138,7 @@ void reset_##NAME() { NAME = DEFAULT; } | @@ -138,6 +138,7 @@ void reset_##NAME() { NAME = DEFAULT; } | ||
| 138 | * | 138 | * |
| 139 | * Key | Value | Description | 139 | * Key | Value | Description |
| 140 | * --- | ---- | ----------- | 140 | * --- | ---- | ----------- |
| 141 | + * name | QString | Contents of #name | ||
| 141 | * separator | QString | Seperate #name into multiple files | 142 | * separator | QString | Seperate #name into multiple files |
| 142 | * Index | int | Index of a template in a template list | 143 | * Index | int | Index of a template in a template list |
| 143 | * Confidence | float | Classification/Regression quality | 144 | * Confidence | float | Classification/Regression quality |
openbr/plugins/algorithms.cpp
| @@ -46,12 +46,13 @@ class AlgorithmsInitializer : public Initializer | @@ -46,12 +46,13 @@ class AlgorithmsInitializer : public Initializer | ||
| 46 | Globals->abbreviations.insert("CropFace", "Open+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+Affine(128,128,0.25,0.35)"); | 46 | Globals->abbreviations.insert("CropFace", "Open+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+Affine(128,128,0.25,0.35)"); |
| 47 | 47 | ||
| 48 | // Video | 48 | // Video |
| 49 | - Globals->abbreviations.insert("DisplayVideo", "Stream([FPSLimit(30)+Show(false,[FrameNumber])+Discard])"); | ||
| 50 | - Globals->abbreviations.insert("PerFrameDetection", "Stream([SaveMat(original)+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+RestoreMat(original)+Draw(inPlace=true),Show(false,[FrameNumber])+Discard])"); | ||
| 51 | - Globals->abbreviations.insert("AgeGenderDemo", "Stream([SaveMat(original)+Cvt(Gray)+Cascade(FrontalFace)+Expand+<FaceClassificationRegistration>+<FaceClassificationExtraction>+<AgeRegressor>/<GenderClassifier>+Discard+RestoreMat(original)+Draw(inPlace=true)+DrawPropertiesPoint([Age,Gender],Affine_0,inPlace=true)+SaveMat(original)+Discard+Contract,RestoreMat(original)+FPSCalc+Show(false,[AvgFPS,Age,Gender])+Discard])"); | ||
| 52 | - Globals->abbreviations.insert("HOG", "Stream([KeyPointDetector(SIFT)+ROI+Expand+Resize(32,32)+Gradient+RectRegions+Bin(0,360,8)+Hist(8)+Cat])+Contract+CatRows+KMeans(500)+Hist(500)+SVM"); | ||
| 53 | - Globals->abbreviations.insert("HOF", "Stream([KeyPointDetector(SIFT),AggregateFrames(2)+OpticalFlow+Gradient+Bin(0,360,8)+ROI+Hist(8)])+Contract+CatRows+KMeans(500)+Hist(500)"); | ||
| 54 | - Globals->abbreviations.insert("HOGHOF", "Stream([Cvt(Gray),KeyPointDetector(SIFT),AggregateFrames(2),(OpticalFlow+Gradient+Bin(0,360,8)+ROI+Hist(8))/(First+Gradient+Bin(0,360,8)+ROI+Hist(8)),CatCols])+Contract+CatRows+KMeans(500)+Hist(500)"); | 49 | + Globals->abbreviations.insert("DisplayVideo", "Stream(FPSLimit(30)+Show(false,[FrameNumber])+Discard)"); |
| 50 | + Globals->abbreviations.insert("PerFrameDetection", "Stream(SaveMat(original)+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+RestoreMat(original)+Draw(inPlace=true)+Show(false,[FrameNumber])+Discard)"); | ||
| 51 | + Globals->abbreviations.insert("AgeGenderDemo", "Stream(SaveMat(original)+Cvt(Gray)+Cascade(FrontalFace)+Expand+<FaceClassificationRegistration>+<FaceClassificationExtraction>+<AgeRegressor>/<GenderClassifier>+Discard+RestoreMat(original)+Draw(inPlace=true)+DrawPropertiesPoint([Age,Gender],Affine_0,inPlace=true)+SaveMat(original)+Discard+Contract+RestoreMat(original)+FPSCalc+Show(false,[AvgFPS,Age,Gender])+Discard)"); | ||
| 52 | + | ||
| 53 | + Globals->abbreviations.insert("HOG", "Stream(DropFrames(5)+Cvt(Gray)+KeyPointDetector(SIFT)+ROI+Expand+Resize(32,32)+Gradient+RectRegions+Bin(0,360,8)+Hist(8)+Cat)+Contract+CatRows+KMeans(500)+Hist(500)+SVM"); | ||
| 54 | + Globals->abbreviations.insert("HOF", "Stream(DropFrames(5)+KeyPointDetector(SIFT)+AggregateFrames(2)+OpticalFlow+ROI+Expand+Resize(32,32)+Gradient+RectRegions+Bin(0,360,8)+Hist(8)+Cat)+Contract+CatRows+KMeans(500)+Hist(500)"); | ||
| 55 | + Globals->abbreviations.insert("HOGHOF", "Stream(DropFrames(5)+Cvt(Gray),KeyPointDetector(SIFT)+AggregateFrames(2)+(OpticalFlow+Gradient+Bin(0,360,8)+ROI+Hist(8))/(First+Gradient+Bin(0,360,8)+ROI+Hist(8))+CatCols)+Contract+CatRows+KMeans(500)+Hist(500)"); | ||
| 55 | 56 | ||
| 56 | // Generic Image Processing | 57 | // Generic Image Processing |
| 57 | Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)"); | 58 | Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)"); |
openbr/plugins/cascade.cpp
| @@ -99,6 +99,8 @@ class CascadeTransform : public UntrainableMetaTransform | @@ -99,6 +99,8 @@ class CascadeTransform : public UntrainableMetaTransform | ||
| 99 | Template u(t.file, m); | 99 | Template u(t.file, m); |
| 100 | if (rejectLevels.size() > j) | 100 | if (rejectLevels.size() > j) |
| 101 | u.file.set("Confidence", rejectLevels[j]*levelWeights[j]); | 101 | u.file.set("Confidence", rejectLevels[j]*levelWeights[j]); |
| 102 | + else | ||
| 103 | + u.file.set("Confidence", 1); | ||
| 102 | const QRectF rect = OpenCVUtils::fromRect(rects[j]); | 104 | const QRectF rect = OpenCVUtils::fromRect(rects[j]); |
| 103 | u.file.appendRect(rect); | 105 | u.file.appendRect(rect); |
| 104 | u.file.set(model, rect); | 106 | u.file.set(model, rect); |
openbr/plugins/frames.cpp
| @@ -19,7 +19,7 @@ class AggregateFrames : public TimeVaryingTransform | @@ -19,7 +19,7 @@ class AggregateFrames : public TimeVaryingTransform | ||
| 19 | TemplateList buffer; | 19 | TemplateList buffer; |
| 20 | 20 | ||
| 21 | public: | 21 | public: |
| 22 | - AggregateFrames() : TimeVaryingTransform(false) {} | 22 | + AggregateFrames() : TimeVaryingTransform(false, false) {} |
| 23 | 23 | ||
| 24 | private: | 24 | private: |
| 25 | void train(const TemplateList &data) | 25 | void train(const TemplateList &data) |
| @@ -29,15 +29,18 @@ private: | @@ -29,15 +29,18 @@ private: | ||
| 29 | 29 | ||
| 30 | void projectUpdate(const Template &src, Template &dst) | 30 | void projectUpdate(const Template &src, Template &dst) |
| 31 | { | 31 | { |
| 32 | - // DropFrames will pass on empty Templates | ||
| 33 | - // but we only want to use non-dropped frames | ||
| 34 | - if (src.empty()) return; | ||
| 35 | buffer.append(src); | 32 | buffer.append(src); |
| 36 | if (buffer.size() < n) return; | 33 | if (buffer.size() < n) return; |
| 37 | foreach (const Template &t, buffer) dst.append(t); | 34 | foreach (const Template &t, buffer) dst.append(t); |
| 38 | dst.file = buffer.takeFirst().file; | 35 | dst.file = buffer.takeFirst().file; |
| 39 | } | 36 | } |
| 40 | 37 | ||
| 38 | + void finalize(TemplateList & output) | ||
| 39 | + { | ||
| 40 | + (void) output; | ||
| 41 | + buffer.clear(); | ||
| 42 | + } | ||
| 43 | + | ||
| 41 | void store(QDataStream &stream) const | 44 | void store(QDataStream &stream) const |
| 42 | { | 45 | { |
| 43 | (void) stream; | 46 | (void) stream; |
| @@ -58,35 +61,21 @@ BR_REGISTER(Transform, AggregateFrames) | @@ -58,35 +61,21 @@ BR_REGISTER(Transform, AggregateFrames) | ||
| 58 | * | 61 | * |
| 59 | * For a video with m frames, DropFrames will pass on m/n frames. | 62 | * For a video with m frames, DropFrames will pass on m/n frames. |
| 60 | */ | 63 | */ |
| 61 | -class DropFrames : public TimeVaryingTransform | 64 | +class DropFrames : public UntrainableMetaTransform |
| 62 | { | 65 | { |
| 63 | Q_OBJECT | 66 | Q_OBJECT |
| 64 | Q_PROPERTY(int n READ get_n WRITE set_n RESET reset_n STORED false) | 67 | Q_PROPERTY(int n READ get_n WRITE set_n RESET reset_n STORED false) |
| 65 | BR_PROPERTY(int, n, 1) | 68 | BR_PROPERTY(int, n, 1) |
| 66 | 69 | ||
| 67 | -public: | ||
| 68 | - DropFrames() : TimeVaryingTransform(false) {} | ||
| 69 | - | ||
| 70 | -private: | ||
| 71 | - void train(const TemplateList &data) | 70 | + void project(const TemplateList &src, TemplateList &dst) const |
| 72 | { | 71 | { |
| 73 | - (void) data; | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - void projectUpdate(const Template &src, Template &dst) | ||
| 77 | - { | ||
| 78 | - if (src.file.get<int>("FrameNumber") % n != 0) return; | 72 | + if (src.first().file.get<int>("FrameNumber") % n != 0) return; |
| 79 | dst = src; | 73 | dst = src; |
| 80 | } | 74 | } |
| 81 | 75 | ||
| 82 | - void store(QDataStream &stream) const | 76 | + void project(const Template &src, Template &dst) const |
| 83 | { | 77 | { |
| 84 | - (void) stream; | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | - void load(QDataStream &stream) | ||
| 88 | - { | ||
| 89 | - (void) stream; | 78 | + (void) src; (void) dst; qFatal("shouldn't be here"); |
| 90 | } | 79 | } |
| 91 | }; | 80 | }; |
| 92 | 81 |
openbr/plugins/gallery.cpp
| @@ -873,6 +873,50 @@ class FDDBGallery : public Gallery | @@ -873,6 +873,50 @@ class FDDBGallery : public Gallery | ||
| 873 | 873 | ||
| 874 | BR_REGISTER(Gallery, FDDBGallery) | 874 | BR_REGISTER(Gallery, FDDBGallery) |
| 875 | 875 | ||
| 876 | +/*! | ||
| 877 | + * \ingroup galleries | ||
| 878 | + * \brief Text format for associating anonymous landmarks with images. | ||
| 879 | + * \author Josh Klontz \cite jklontz | ||
| 880 | + * | ||
| 881 | + * \code | ||
| 882 | + * file_name:x1,y1,x2,y2,...,xn,yn | ||
| 883 | + * file_name:x1,y1,x2,y2,...,xn,yn | ||
| 884 | + * ... | ||
| 885 | + * file_name:x1,y1,x2,y2,...,xn,yn | ||
| 886 | + * \endcode | ||
| 887 | + */ | ||
| 888 | +class landmarksGallery : public Gallery | ||
| 889 | +{ | ||
| 890 | + Q_OBJECT | ||
| 891 | + | ||
| 892 | + TemplateList readBlock(bool *done) | ||
| 893 | + { | ||
| 894 | + *done = true; | ||
| 895 | + TemplateList templates; | ||
| 896 | + foreach (const QString &line, QtUtils::readLines(file)) { | ||
| 897 | + const QStringList words = line.split(':'); | ||
| 898 | + if (words.size() != 2) qFatal("Expected exactly one ':' in: %s.", qPrintable(line)); | ||
| 899 | + File file(words[0]); | ||
| 900 | + const QList<float> vals = QtUtils::toFloats(words[1].split(',')); | ||
| 901 | + if (vals.size() % 2 != 0) qFatal("Expected an even number of comma-separated values."); | ||
| 902 | + QList<QPointF> points; points.reserve(vals.size()/2); | ||
| 903 | + for (int i=0; i<vals.size(); i+=2) | ||
| 904 | + points.append(QPointF(vals[i], vals[i+1])); | ||
| 905 | + file.setPoints(points); | ||
| 906 | + templates.append(file); | ||
| 907 | + } | ||
| 908 | + return templates; | ||
| 909 | + } | ||
| 910 | + | ||
| 911 | + void write(const Template &t) | ||
| 912 | + { | ||
| 913 | + (void) t; | ||
| 914 | + qFatal("Not implemented."); | ||
| 915 | + } | ||
| 916 | +}; | ||
| 917 | + | ||
| 918 | +BR_REGISTER(Gallery, landmarksGallery) | ||
| 919 | + | ||
| 876 | } // namespace br | 920 | } // namespace br |
| 877 | 921 | ||
| 878 | #include "gallery.moc" | 922 | #include "gallery.moc" |
openbr/plugins/gui.cpp
| @@ -143,6 +143,51 @@ private: | @@ -143,6 +143,51 @@ private: | ||
| 143 | 143 | ||
| 144 | }; | 144 | }; |
| 145 | 145 | ||
| 146 | +class PromptWindow : public DisplayWindow | ||
| 147 | +{ | ||
| 148 | + bool eventFilter(QObject * obj, QEvent * event) | ||
| 149 | + { | ||
| 150 | + if (event->type() == QEvent::KeyPress) | ||
| 151 | + { | ||
| 152 | + event->accept(); | ||
| 153 | + | ||
| 154 | + QKeyEvent * key_event = dynamic_cast<QKeyEvent *> (event); | ||
| 155 | + if (key_event == NULL) { | ||
| 156 | + qDebug("failed to donwcast key event"); | ||
| 157 | + return true; | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + QString text = key_event->text(); | ||
| 161 | + | ||
| 162 | + text =text.toLower(); | ||
| 163 | + if (text == "y" || text == "n") | ||
| 164 | + { | ||
| 165 | + gotString = key_event->text(); | ||
| 166 | + wait.wakeAll(); | ||
| 167 | + } | ||
| 168 | + else qDebug("Please answer y/n"); | ||
| 169 | + | ||
| 170 | + return true; | ||
| 171 | + } else { | ||
| 172 | + return QObject::eventFilter(obj, event); | ||
| 173 | + } | ||
| 174 | + } | ||
| 175 | + | ||
| 176 | +public: | ||
| 177 | + QString waitForKeyPress() | ||
| 178 | + { | ||
| 179 | + QMutexLocker locker(&lock); | ||
| 180 | + wait.wait(&lock); | ||
| 181 | + | ||
| 182 | + return gotString; | ||
| 183 | + } | ||
| 184 | + | ||
| 185 | +private: | ||
| 186 | + QString gotString; | ||
| 187 | + | ||
| 188 | + | ||
| 189 | +}; | ||
| 190 | + | ||
| 146 | 191 | ||
| 147 | // I want a template class that doesn't look like a template class | 192 | // I want a template class that doesn't look like a template class |
| 148 | class NominalCreation | 193 | class NominalCreation |
| @@ -382,6 +427,68 @@ public: | @@ -382,6 +427,68 @@ public: | ||
| 382 | 427 | ||
| 383 | BR_REGISTER(Transform, ManualTransform) | 428 | BR_REGISTER(Transform, ManualTransform) |
| 384 | 429 | ||
| 430 | + | ||
| 431 | +/*! | ||
| 432 | + * \ingroup transforms | ||
| 433 | + * \brief Display an image, and asks a yes/no question about it | ||
| 434 | + * \author Charles Otto \cite caotto | ||
| 435 | + */ | ||
| 436 | +class SurveyTransform : public ShowTransform | ||
| 437 | +{ | ||
| 438 | + Q_OBJECT | ||
| 439 | + | ||
| 440 | +public: | ||
| 441 | + Q_PROPERTY(QString question READ get_question WRITE set_question RESET reset_question STORED false) | ||
| 442 | + BR_PROPERTY(QString, question, "Yes/No") | ||
| 443 | + | ||
| 444 | + Q_PROPERTY(QString propertyName READ get_propertyName WRITE set_propertyName RESET reset_propertyName STORED false) | ||
| 445 | + BR_PROPERTY(QString, propertyName, "answer") | ||
| 446 | + | ||
| 447 | + | ||
| 448 | + void projectUpdate(const TemplateList &src, TemplateList &dst) | ||
| 449 | + { | ||
| 450 | + if (Globals->parallelism > 1) | ||
| 451 | + qFatal("SurveyTransform cannot execute in parallel."); | ||
| 452 | + | ||
| 453 | + dst = src; | ||
| 454 | + | ||
| 455 | + if (src.empty()) | ||
| 456 | + return; | ||
| 457 | + | ||
| 458 | + for (int i = 0; i < dst.size(); i++) { | ||
| 459 | + foreach(const cv::Mat &m, dst[i]) { | ||
| 460 | + qImageBuffer = toQImage(m); | ||
| 461 | + displayBuffer->convertFromImage(qImageBuffer); | ||
| 462 | + | ||
| 463 | + emit updateImage(displayBuffer->copy(displayBuffer->rect())); | ||
| 464 | + | ||
| 465 | + // Blocking wait for a key-press | ||
| 466 | + if (this->waitInput) { | ||
| 467 | + QString answer = p_window->waitForKeyPress(); | ||
| 468 | + | ||
| 469 | + dst[i].file.set(this->propertyName, answer); | ||
| 470 | + } | ||
| 471 | + } | ||
| 472 | + } | ||
| 473 | + } | ||
| 474 | + PromptWindow * p_window; | ||
| 475 | + | ||
| 476 | + | ||
| 477 | + void init() | ||
| 478 | + { | ||
| 479 | + if (!Globals->useGui) | ||
| 480 | + return; | ||
| 481 | + | ||
| 482 | + initActual<PromptWindow>(); | ||
| 483 | + p_window = (PromptWindow *) window; | ||
| 484 | + | ||
| 485 | + emit changeTitle(this->question); | ||
| 486 | + } | ||
| 487 | +}; | ||
| 488 | + | ||
| 489 | +BR_REGISTER(Transform, SurveyTransform) | ||
| 490 | + | ||
| 491 | + | ||
| 385 | class FPSLimit : public TimeVaryingTransform | 492 | class FPSLimit : public TimeVaryingTransform |
| 386 | { | 493 | { |
| 387 | Q_OBJECT | 494 | Q_OBJECT |
openbr/plugins/meta.cpp
| @@ -614,6 +614,11 @@ public: | @@ -614,6 +614,11 @@ public: | ||
| 614 | 614 | ||
| 615 | void train(const TemplateList &data) | 615 | void train(const TemplateList &data) |
| 616 | { | 616 | { |
| 617 | + if (!transform->trainable) { | ||
| 618 | + qWarning("Attempted to train untrainable transform, nothing will happen."); | ||
| 619 | + return; | ||
| 620 | + } | ||
| 621 | + | ||
| 617 | transform->train(data); | 622 | transform->train(data); |
| 618 | } | 623 | } |
| 619 | 624 | ||
| @@ -628,7 +633,6 @@ public: | @@ -628,7 +633,6 @@ public: | ||
| 628 | else dst = output[0]; | 633 | else dst = output[0]; |
| 629 | } | 634 | } |
| 630 | 635 | ||
| 631 | - | ||
| 632 | // For each input template, form a single element TemplateList, push all those | 636 | // For each input template, form a single element TemplateList, push all those |
| 633 | // lists through transform, and form dst by concatenating the results. | 637 | // lists through transform, and form dst by concatenating the results. |
| 634 | // Process the single elemnt templates in parallel if parallelism is enabled. | 638 | // Process the single elemnt templates in parallel if parallelism is enabled. |
| @@ -677,7 +681,6 @@ public: | @@ -677,7 +681,6 @@ public: | ||
| 677 | 681 | ||
| 678 | void init() | 682 | void init() |
| 679 | { | 683 | { |
| 680 | - | ||
| 681 | if (transform && transform->timeVarying()) | 684 | if (transform && transform->timeVarying()) |
| 682 | transform = new br::TimeInvariantWrapperTransform(transform); | 685 | transform = new br::TimeInvariantWrapperTransform(transform); |
| 683 | } | 686 | } |
openbr/plugins/openbr_internal.h
| @@ -122,7 +122,10 @@ public: | @@ -122,7 +122,10 @@ public: | ||
| 122 | 122 | ||
| 123 | TimeInvariantWrapperTransform(Transform * basis) : transformSource(new TransformCopier(basis)) | 123 | TimeInvariantWrapperTransform(Transform * basis) : transformSource(new TransformCopier(basis)) |
| 124 | { | 124 | { |
| 125 | + if (!basis) | ||
| 126 | + qFatal("TimeInvariantWrapper created with NULL transform"); | ||
| 125 | baseTransform = basis; | 127 | baseTransform = basis; |
| 128 | + trainable = basis->trainable; | ||
| 126 | } | 129 | } |
| 127 | 130 | ||
| 128 | virtual void project(const Template &src, Template &dst) const | 131 | virtual void project(const Template &src, Template &dst) const |
| @@ -132,7 +135,6 @@ public: | @@ -132,7 +135,6 @@ public: | ||
| 132 | transformSource.release(aTransform); | 135 | transformSource.release(aTransform); |
| 133 | } | 136 | } |
| 134 | 137 | ||
| 135 | - | ||
| 136 | void project(const TemplateList &src, TemplateList &dst) const | 138 | void project(const TemplateList &src, TemplateList &dst) const |
| 137 | { | 139 | { |
| 138 | Transform * aTransform = transformSource.acquire(); | 140 | Transform * aTransform = transformSource.acquire(); |
openbr/plugins/stream.cpp
| @@ -649,7 +649,7 @@ public: | @@ -649,7 +649,7 @@ public: | ||
| 649 | class ProcessingStage | 649 | class ProcessingStage |
| 650 | { | 650 | { |
| 651 | public: | 651 | public: |
| 652 | - friend class StreamTransform; | 652 | + friend class DirectStreamTransform; |
| 653 | public: | 653 | public: |
| 654 | ProcessingStage(int nThreads = 1) | 654 | ProcessingStage(int nThreads = 1) |
| 655 | { | 655 | { |
| @@ -1015,15 +1015,23 @@ public: | @@ -1015,15 +1015,23 @@ public: | ||
| 1015 | }; | 1015 | }; |
| 1016 | 1016 | ||
| 1017 | 1017 | ||
| 1018 | -class StreamTransform : public CompositeTransform | 1018 | + |
| 1019 | +class DirectStreamTransform : public CompositeTransform | ||
| 1019 | { | 1020 | { |
| 1020 | Q_OBJECT | 1021 | Q_OBJECT |
| 1021 | public: | 1022 | public: |
| 1022 | Q_PROPERTY(int activeFrames READ get_activeFrames WRITE set_activeFrames RESET reset_activeFrames) | 1023 | Q_PROPERTY(int activeFrames READ get_activeFrames WRITE set_activeFrames RESET reset_activeFrames) |
| 1023 | BR_PROPERTY(int, activeFrames, 100) | 1024 | BR_PROPERTY(int, activeFrames, 100) |
| 1024 | 1025 | ||
| 1026 | + friend class StreamTransfrom; | ||
| 1027 | + | ||
| 1025 | void train(const TemplateList & data) | 1028 | void train(const TemplateList & data) |
| 1026 | { | 1029 | { |
| 1030 | + if (!trainable) { | ||
| 1031 | + qWarning("Attempted to train untrainable transform, nothing will happen."); | ||
| 1032 | + return; | ||
| 1033 | + } | ||
| 1034 | + qFatal("Stream train is currently not implemented."); | ||
| 1027 | foreach(Transform * transform, transforms) { | 1035 | foreach(Transform * transform, transforms) { |
| 1028 | transform->train(data); | 1036 | transform->train(data); |
| 1029 | } | 1037 | } |
| @@ -1110,6 +1118,10 @@ public: | @@ -1110,6 +1118,10 @@ public: | ||
| 1110 | { | 1118 | { |
| 1111 | if (transforms.isEmpty()) return; | 1119 | if (transforms.isEmpty()) return; |
| 1112 | 1120 | ||
| 1121 | + for (int i=0; i < processingStages.size();i++) | ||
| 1122 | + delete processingStages[i]; | ||
| 1123 | + processingStages.clear(); | ||
| 1124 | + | ||
| 1113 | // call CompositeTransform::init so that trainable is set | 1125 | // call CompositeTransform::init so that trainable is set |
| 1114 | // correctly. | 1126 | // correctly. |
| 1115 | CompositeTransform::init(); | 1127 | CompositeTransform::init(); |
| @@ -1185,12 +1197,13 @@ public: | @@ -1185,12 +1197,13 @@ public: | ||
| 1185 | collectionStage->nextStage = readStage; | 1197 | collectionStage->nextStage = readStage; |
| 1186 | } | 1198 | } |
| 1187 | 1199 | ||
| 1188 | - ~StreamTransform() | 1200 | + ~DirectStreamTransform() |
| 1189 | { | 1201 | { |
| 1190 | // Delete all the stages | 1202 | // Delete all the stages |
| 1191 | for (int i = 0; i < processingStages.size(); i++) { | 1203 | for (int i = 0; i < processingStages.size(); i++) { |
| 1192 | delete processingStages[i]; | 1204 | delete processingStages[i]; |
| 1193 | } | 1205 | } |
| 1206 | + processingStages.clear(); | ||
| 1194 | } | 1207 | } |
| 1195 | 1208 | ||
| 1196 | protected: | 1209 | protected: |
| @@ -1232,12 +1245,150 @@ protected: | @@ -1232,12 +1245,150 @@ protected: | ||
| 1232 | } | 1245 | } |
| 1233 | }; | 1246 | }; |
| 1234 | 1247 | ||
| 1235 | -QHash<QObject *, QThreadPool *> StreamTransform::pools; | ||
| 1236 | -QMutex StreamTransform::poolsAccess; | 1248 | +QHash<QObject *, QThreadPool *> DirectStreamTransform::pools; |
| 1249 | +QMutex DirectStreamTransform::poolsAccess; | ||
| 1250 | + | ||
| 1251 | +BR_REGISTER(Transform, DirectStreamTransform) | ||
| 1252 | + | ||
| 1253 | +; | ||
| 1254 | + | ||
| 1255 | +class StreamTransform : public TimeVaryingTransform | ||
| 1256 | +{ | ||
| 1257 | + Q_OBJECT | ||
| 1258 | + | ||
| 1259 | +public: | ||
| 1260 | + StreamTransform() : TimeVaryingTransform(false) | ||
| 1261 | + { | ||
| 1262 | + } | ||
| 1263 | + | ||
| 1264 | + Q_PROPERTY(br::Transform *transform READ get_transform WRITE set_transform RESET reset_transform STORED false) | ||
| 1265 | + Q_PROPERTY(int activeFrames READ get_activeFrames WRITE set_activeFrames RESET reset_activeFrames) | ||
| 1266 | + BR_PROPERTY(br::Transform *, transform, NULL) | ||
| 1267 | + BR_PROPERTY(int, activeFrames, 100) | ||
| 1268 | + | ||
| 1269 | + bool timeVarying() const { return true; } | ||
| 1270 | + | ||
| 1271 | + void project(const Template &src, Template &dst) const | ||
| 1272 | + { | ||
| 1273 | + basis.project(src,dst); | ||
| 1274 | + } | ||
| 1275 | + | ||
| 1276 | + void projectUpdate(const Template &src, Template &dst) | ||
| 1277 | + { | ||
| 1278 | + basis.projectUpdate(src,dst); | ||
| 1279 | + } | ||
| 1280 | + void projectUpdate(const TemplateList & src, TemplateList & dst) | ||
| 1281 | + { | ||
| 1282 | + basis.projectUpdate(src,dst); | ||
| 1283 | + } | ||
| 1284 | + | ||
| 1285 | + | ||
| 1286 | + void train(const TemplateList & data) | ||
| 1287 | + { | ||
| 1288 | + basis.train(data); | ||
| 1289 | + } | ||
| 1290 | + | ||
| 1291 | + virtual void finalize(TemplateList & output) | ||
| 1292 | + { | ||
| 1293 | + (void) output; | ||
| 1294 | + // Nothing in particular to do here, stream calls finalize | ||
| 1295 | + // on all child transforms as part of projectUpdate | ||
| 1296 | + } | ||
| 1297 | + | ||
| 1298 | + // reinterpret transform, set up the actual stream. We can only reinterpret pipes | ||
| 1299 | + void init() | ||
| 1300 | + { | ||
| 1301 | + if (!transform) | ||
| 1302 | + return; | ||
| 1303 | + trainable = transform->trainable; | ||
| 1304 | + | ||
| 1305 | + basis.setParent(this->parent()); | ||
| 1306 | + basis.transforms.clear(); | ||
| 1307 | + basis.activeFrames = this->activeFrames; | ||
| 1308 | + | ||
| 1309 | + // We need at least a CompositeTransform * to acess transform's children. | ||
| 1310 | + CompositeTransform * downcast = dynamic_cast<CompositeTransform *> (transform); | ||
| 1311 | + | ||
| 1312 | + // If this isn't even a composite transform, or it's not a pipe, just set up | ||
| 1313 | + // basis with 1 stage. | ||
| 1314 | + if (!downcast || QString(transform->metaObject()->className()) != "br::PipeTransform") | ||
| 1315 | + { | ||
| 1316 | + basis.transforms.append(transform); | ||
| 1317 | + basis.init(); | ||
| 1318 | + return; | ||
| 1319 | + } | ||
| 1320 | + if (downcast->transforms.empty()) | ||
| 1321 | + { | ||
| 1322 | + qWarning("Trying to set up empty stream"); | ||
| 1323 | + basis.init(); | ||
| 1324 | + return; | ||
| 1325 | + } | ||
| 1326 | + | ||
| 1327 | + // OK now we will regroup downcast's children | ||
| 1328 | + QList<QList<Transform *> > sets; | ||
| 1329 | + sets.append(QList<Transform *> ()); | ||
| 1330 | + sets.last().append(downcast->transforms[0]); | ||
| 1331 | + if (downcast->transforms[0]->timeVarying()) | ||
| 1332 | + sets.append(QList<Transform *> ()); | ||
| 1333 | + | ||
| 1334 | + for (int i=1;i < downcast->transforms.size(); i++) { | ||
| 1335 | + // If this is time varying it becomse its own stage | ||
| 1336 | + if (downcast->transforms[i]->timeVarying()) { | ||
| 1337 | + // If a set was already active, we add another one | ||
| 1338 | + if (!sets.last().empty()) { | ||
| 1339 | + sets.append(QList<Transform *>()); | ||
| 1340 | + } | ||
| 1341 | + // add the item | ||
| 1342 | + sets.last().append(downcast->transforms[i]); | ||
| 1343 | + // Add another set to indicate separation. | ||
| 1344 | + sets.append(QList<Transform *>()); | ||
| 1345 | + } | ||
| 1346 | + // otherwise, we can combine non time-varying stages | ||
| 1347 | + else { | ||
| 1348 | + sets.last().append(downcast->transforms[i]); | ||
| 1349 | + } | ||
| 1350 | + | ||
| 1351 | + } | ||
| 1352 | + if (sets.last().empty()) | ||
| 1353 | + sets.removeLast(); | ||
| 1354 | + | ||
| 1355 | + QList<Transform *> transform_set; | ||
| 1356 | + transform_set.reserve(sets.size()); | ||
| 1357 | + for (int i=0; i < sets.size(); i++) { | ||
| 1358 | + // If this is a single transform set, we add that to the list | ||
| 1359 | + if (sets[i].size() == 1 ) { | ||
| 1360 | + transform_set.append(sets[i].at(0)); | ||
| 1361 | + } | ||
| 1362 | + //otherwise we build a pipe | ||
| 1363 | + else { | ||
| 1364 | + CompositeTransform * pipe = dynamic_cast<CompositeTransform *>(Transform::make("Pipe([])", this)); | ||
| 1365 | + pipe->transforms = sets[i]; | ||
| 1366 | + pipe->init(); | ||
| 1367 | + transform_set.append(pipe); | ||
| 1368 | + } | ||
| 1369 | + } | ||
| 1370 | + | ||
| 1371 | + basis.transforms = transform_set; | ||
| 1372 | + basis.init(); | ||
| 1373 | + } | ||
| 1374 | + | ||
| 1375 | + Transform * smartCopy() | ||
| 1376 | + { | ||
| 1377 | + // We just want the DirectStream to begin with, so just return a copy of that. | ||
| 1378 | + DirectStreamTransform * res = (DirectStreamTransform *) basis.smartCopy(); | ||
| 1379 | + res->activeFrames = this->activeFrames; | ||
| 1380 | + return res; | ||
| 1381 | + } | ||
| 1382 | + | ||
| 1383 | + | ||
| 1384 | +private: | ||
| 1385 | + DirectStreamTransform basis; | ||
| 1386 | +}; | ||
| 1237 | 1387 | ||
| 1238 | BR_REGISTER(Transform, StreamTransform) | 1388 | BR_REGISTER(Transform, StreamTransform) |
| 1239 | 1389 | ||
| 1240 | 1390 | ||
| 1391 | + | ||
| 1241 | } // namespace br | 1392 | } // namespace br |
| 1242 | 1393 | ||
| 1243 | #include "stream.moc" | 1394 | #include "stream.moc" |